coder / envbuilder

Build development environments from a Dockerfile on Docker, Kubernetes, and OpenShift. Enable developers to modify their development environment quickly.
Apache License 2.0
111 stars 23 forks source link

feat: prefix cached image with ENVBUILDER_CACHED_IMAGE in log output #251

Closed johnstcn closed 2 weeks ago

johnstcn commented 2 weeks ago

When running ENVBUILDER_GET_CACHED_IMAGE, prefixes the cached image with the string ENVBUILDER_CACHED_IMAGE=.

This can then be consumed more easily e.g.

resource "docker_container" "check_cache" {                                                                                                                                                                   
  image = var.envbuilder_image
  name = "envbuilder-get-cached-image"
  attach = true
  logs = true
  must_run = false
  network_mode = "host"
  env = [ 
    "ENVBUILDER_GIT_URL=${var.git_repo}",
    "ENVBUILDER_DEVCONTAINER_DIR=${var.devcontainer_dir}",
    "ENVBUILDER_GET_CACHED_IMAGE=1",
    "ENVBUILDER_CACHE_REPO=localhost:5000/envbuilder-cache",
  ]
}

locals {
  logs = docker_container.check_cache.container_logs
  regex_match = try(regex("ENVBUILDER_CACHED_IMAGE=([^\\S]+)", local.logs), [""])
  cached_image_ref = local.regex_match[0]
}

resource "docker_container" "cached" {
  image = coalesce(local.cached_image_ref, var.envbuilder_image)
  name = "envbuilder-workspace"
  network_mode = "host"
  env = [ 
    "ENVBUILDER_GIT_URL=${var.git_repo}",
    "ENVBUILDER_DEVCONTAINER_DIR=${var.devcontainer_dir}",
    "ENVBUILDER_INIT_SCRIPT=sleep infinity",
    "ENVBUILDER_PUSH_IMAGE=1",
    "ENVBUILDER_CACHE_REPO=localhost:5000/envbuilder-cache",
  ]
}