Skip to content

Commit 2bef175

Browse files
johnstcnmafredri
andauthored
chore(envbuilder-dogfood): update envbuilder-dogfood template to use provider (#14324)
Updates the envbuilder-dogfood template to use the envbuilder provider. Relates to coder/internal#38 Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
1 parent 40baa5b commit 2bef175

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

envbuilder-dogfood/main.tf

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ terraform {
77
source = "kreuzwerker/docker"
88
version = "~> 3.0.0"
99
}
10+
envbuilder = {
11+
source = "coder/envbuilder"
12+
}
1013
}
1114
}
1215

@@ -336,33 +339,49 @@ resource "docker_image" "envbuilder" {
336339
keep_locally = true
337340
}
338341

342+
locals {
343+
cache_repo = "us-central1-docker.pkg.dev/coder-dogfood-v2/envbuilder-cache/coder-dogfood"
344+
envbuilder_env = {
345+
"CODER_AGENT_TOKEN" : coder_agent.dev.token,
346+
"CODER_AGENT_URL" : data.coder_workspace.me.access_url,
347+
"ENVBUILDER_GIT_USERNAME" : data.coder_external_auth.github.access_token,
348+
# "ENVBUILDER_GIT_URL" : data.coder_parameter.devcontainer_repo.value, # The provider sets this via the `git_url` property.
349+
"ENVBUILDER_DEVCONTAINER_DIR" : data.coder_parameter.devcontainer_dir.value,
350+
"ENVBUILDER_INIT_SCRIPT" : coder_agent.dev.init_script,
351+
"ENVBUILDER_FALLBACK_IMAGE" : "codercom/oss-dogfood:latest", # This image runs if builds fail
352+
"ENVBUILDER_PUSH_IMAGE" : "true", # Push the image to the remote cache
353+
# "ENVBUILDER_CACHE_REPO" : local.cache_repo, # The provider sets this via the `cache_repo` property.
354+
"ENVBUILDER_DOCKER_CONFIG_BASE64" : data.local_sensitive_file.envbuilder_cache_dockerconfigjson.content_base64,
355+
"USE_CAP_NET_ADMIN" : "true",
356+
# Set git commit details correctly
357+
"GIT_AUTHOR_NAME" : coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name),
358+
"GIT_AUTHOR_EMAIL" : data.coder_workspace_owner.me.email,
359+
"GIT_COMMITTER_NAME" : coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name),
360+
"GIT_COMMITTER_EMAIL" : data.coder_workspace_owner.me.email,
361+
}
362+
}
363+
364+
# Check for the presence of a prebuilt image in the cache repo
365+
# that we can use instead.
366+
resource "envbuilder_cached_image" "cached" {
367+
count = data.coder_workspace.me.start_count
368+
builder_image = docker_image.envbuilder.name
369+
git_url = data.coder_parameter.devcontainer_repo.value
370+
cache_repo = local.cache_repo
371+
extra_env = local.envbuilder_env
372+
}
373+
339374
resource "docker_container" "workspace" {
340375
count = data.coder_workspace.me.start_count
341-
image = docker_image.envbuilder.name
376+
image = envbuilder_cached_image.cached.0.image
342377
name = local.container_name
343378
# Hostname makes the shell more user friendly: coder@my-workspace:~$
344379
hostname = data.coder_workspace.me.name
345380
# CPU limits are unnecessary since Docker will load balance automatically
346381
memory = 32768
347382
runtime = "sysbox-runc"
348-
env = [
349-
"CODER_AGENT_TOKEN=${coder_agent.dev.token}",
350-
"CODER_AGENT_URL=${data.coder_workspace.me.access_url}",
351-
"ENVBUILDER_GIT_USERNAME=${data.coder_external_auth.github.access_token}",
352-
"ENVBUILDER_GIT_URL=${data.coder_parameter.devcontainer_repo.value}",
353-
"ENVBUILDER_DEVCONTAINER_DIR=${data.coder_parameter.devcontainer_dir.value}",
354-
"ENVBUILDER_INIT_SCRIPT=${coder_agent.dev.init_script}",
355-
"ENVBUILDER_FALLBACK_IMAGE=codercom/oss-dogfood:latest", # This image runs if builds fail
356-
# "ENVBUILDER_PUSH_IMAGE=1", # Push the image to the remote cache
357-
"ENVBUILDER_CACHE_REPO=us-central1-docker.pkg.dev/coder-dogfood-v2/envbuilder-cache/coder-dogfood",
358-
"ENVBUILDER_DOCKER_CONFIG_BASE64=${data.local_sensitive_file.envbuilder_cache_dockerconfigjson.content_base64}",
359-
"USE_CAP_NET_ADMIN=true",
360-
# Set git commit details correctly
361-
"GIT_AUTHOR_NAME=${coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)}",
362-
"GIT_AUTHOR_EMAIL=${data.coder_workspace_owner.me.email}",
363-
"GIT_COMMITTER_NAME=${coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)}",
364-
"GIT_COMMITTER_EMAIL=${data.coder_workspace_owner.me.email}",
365-
]
383+
# Use environment computed from the provider
384+
env = envbuilder_cached_image.cached.0.env
366385
host {
367386
host = "host.docker.internal"
368387
ip = "host-gateway"
@@ -401,7 +420,7 @@ resource "docker_container" "workspace" {
401420

402421
resource "coder_metadata" "container_info" {
403422
count = data.coder_workspace.me.start_count
404-
resource_id = docker_container.workspace[0].id
423+
resource_id = coder_agent.dev.id
405424
item {
406425
key = "memory"
407426
value = docker_container.workspace[0].memory

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy