diff --git a/lib/buildkite/config/build_context.rb b/lib/buildkite/config/build_context.rb index c5f7760..9f6874c 100644 --- a/lib/buildkite/config/build_context.rb +++ b/lib/buildkite/config/build_context.rb @@ -190,7 +190,7 @@ def min_ruby end def remote_image_base - "973266071021.dkr.ecr.us-east-1.amazonaws.com/#{"#{build_queue}-" unless standard_queues.include?(build_queue)}builds" + ENV.fetch("REGISTRY") + "/#{"#{build_queue}-" unless standard_queues.include?(build_queue)}builds" end end end diff --git a/lib/buildkite/config/docker_build.rb b/lib/buildkite/config/docker_build.rb index b43f630..ff64c83 100644 --- a/lib/buildkite/config/docker_build.rb +++ b/lib/buildkite/config/docker_build.rb @@ -30,11 +30,7 @@ def cache_from(build_context) end def build_push(build_context) - [ - build_context.local_branch =~ /:/ ? - build_context.image_name_for("pr-#{build_context.pull_request}") : - build_context.image_name_for("br-#{build_context.local_branch}"), - ] + build_context.image_name_for(build_context.build_id, prefix: nil) end end @@ -66,20 +62,11 @@ def builder(ruby) compressed: ".buildkite.tgz" } - plugin :docker_compose, { - build: "base", - config: ".buildkite/docker-compose.yml", - env: %w[PRE_STEPS RACK], - "image-name" => build_context.ruby.image_name_for(build_context.build_id), - "cache-from" => cache_from(build_context), - push: build_push(build_context), - "image-repository" => build_context.image_base, - } + command "docker build --push --build-arg RUBY_IMAGE=#{build_context.ruby.ruby_image} --tag #{build_push(build_context)} --file .buildkite/Dockerfile ." env({ BUNDLER: build_context.bundler, RUBYGEMS: build_context.rubygems, - RUBY_IMAGE: build_context.ruby.ruby_image, encrypted_0fb9444d0374_key: nil, encrypted_0fb9444d0374_iv: nil }) diff --git a/lib/buildkite/config/rake_command.rb b/lib/buildkite/config/rake_command.rb index 7c78a9f..babfbca 100644 --- a/lib/buildkite/config/rake_command.rb +++ b/lib/buildkite/config/rake_command.rb @@ -48,12 +48,14 @@ def install_plugins(service = "default", env = nil, dir = ".") ], compressed: ".buildkite.tgz" } + plugin :metahook, { + "pre-command": "echo \"+++ inspect docker image store\"\ndocker image ls" + } plugin :docker_compose, { "env" => env, "run" => service, - "pull" => service, - "pull-retries" => 3, + "tty" => "true", "config" => ".buildkite/docker-compose.yml", "shell" => ["runner", *dir], }.compact diff --git a/pipelines/rails-ci/initial.yml b/pipelines/rails-ci/initial.yml index 299245d..92b3b9d 100644 --- a/pipelines/rails-ci/initial.yml +++ b/pipelines/rails-ci/initial.yml @@ -1,9 +1,15 @@ # This file is never read -- it's just a copy of the pipeline's # configuration in the Buildkite UI. +env: + CONFIG_REPO: "https://github.com/yob/buildkite-config" + CONFIG_BRANCH: "hosted" steps: - name: ":pipeline: rails-initial-pipeline" command: | + echo "Fetching registry details" + export REGISTRY="$$(nsc workspace describe -o json -k registry_url)" + PATH=/bin:/usr/bin set -e @@ -30,17 +36,22 @@ steps: echo "Fetching pull-request metadata:" (docker run --rm \ -v "$$PWD":/app:ro -w /app \ + -v "$$PWD/cache/bundler":/usr/local/bundle \ -e GITHUB_PUBLIC_REPO_TOKEN \ -e BUILDKITE_REPO \ -e BUILDKITE_PULL_REQUEST \ ruby:latest \ .buildkite/bin/fetch-pr > .buildkite/tmp/.pr-meta.json) || true + echo "Generating pipeline:" sh -c "$$PIPELINE_COMMAND" ([ -f .buildkite/.dockerignore ] && cp .buildkite/.dockerignore .dockerignore) || true - + cache: + paths: + - "cache/bundler" + name: "rails-initial-bundler-cache" plugins: - artifacts#v1.9.3: upload: ".dockerignore" @@ -58,6 +69,7 @@ steps: PIPELINE_COMMAND: >- docker run --rm -v "$$PWD":/app:ro -w /app + -v "$$PWD/cache/bundler":/usr/local/bundle -e CI -e BUILDKITE -e BUILDKITE_AGENT_META_DATA_QUEUE @@ -72,9 +84,10 @@ steps: -e DOCKER_IMAGE -e RUN_QUEUE -e QUEUE + -e REGISTRY ruby:latest .buildkite/bin/pipeline-generate rails-ci | buildkite-agent pipeline upload timeout_in_minutes: 5 agents: - queue: "${QUEUE-builder}" + queue: hosted diff --git a/pipelines/rails-ci/pipeline.rb b/pipelines/rails-ci/pipeline.rb index f740dcb..86eb3e3 100644 --- a/pipelines/rails-ci/pipeline.rb +++ b/pipelines/rails-ci/pipeline.rb @@ -7,8 +7,9 @@ use Buildkite::Config::RakeCommand use Buildkite::Config::RubyGroup - plugin :docker_compose, "docker-compose#v4.16.0" + plugin :docker_compose, "docker-compose#v5.4.1" plugin :artifacts, "artifacts#v1.9.3" + plugin :metahook, "improbable-eng/metahook#v0.4.1" if build_context.nightly? build_context.rubies << Buildkite::Config::RubyConfig.master_ruby