diff options
-rw-r--r-- | .expeditor/build-docker-images.sh | 21 | ||||
-rw-r--r-- | .expeditor/docker-build.pipeline.yml | 22 | ||||
-rw-r--r-- | .expeditor/promote-docker-images.sh | 42 |
3 files changed, 68 insertions, 17 deletions
diff --git a/.expeditor/build-docker-images.sh b/.expeditor/build-docker-images.sh new file mode 100644 index 0000000000..becf90b484 --- /dev/null +++ b/.expeditor/build-docker-images.sh @@ -0,0 +1,21 @@ +#! /bin/bash + +export DOCKER_CLI_EXPERIMENTAL=enabled + +arch=$1 + +echo "--- Building chef/chef:${EXPEDITOR_VERSION} docker image for ${arch}" +docker build \ + --build-arg "CHANNEL=${EXPEDITOR_CHANNEL}" \ + --build-arg "VERSION=${EXPEDITOR_VERSION}" \ + -t "chef/chef:${EXPEDITOR_VERSION}-${arch}" . + +echo "--- Pushing chef/chef:${EXPEDITOR_VERSION} docker image for ${arch} to dockerhub" +docker push "chef/chef:${EXPEDITOR_VERSION}-${arch}" + +echo "--- Creating chef/chef:${EXPEDITOR_VERSION} multiarch manifest" +docker manifest create "chef/chef:${EXPEDITOR_VERSION}" \ + --amend "chef/chef:${EXPEDITOR_VERSION}-${arch}" + +echo "--- Pushing chef/chef:${EXPEDITOR_VERSION} multiarch manifest" +docker manifest push "chef/chef:${EXPEDITOR_VERSION}"
\ No newline at end of file diff --git a/.expeditor/docker-build.pipeline.yml b/.expeditor/docker-build.pipeline.yml index 5d15bb27f2..30820d9169 100644 --- a/.expeditor/docker-build.pipeline.yml +++ b/.expeditor/docker-build.pipeline.yml @@ -1,23 +1,11 @@ --- -env: - IMAGE_REGISTRY: chef - BUILDKITE_PLUGIN_DOBI_S3_BUCKET_NAME: docker-buildkite-cache-chef-prod steps: -- id: chef - label: ":docker: build chef" +- label: ":docker: build chef amd64" agents: queue: docker-linux - plugins: - - chef/dobi#v0.1.1: - tasks: - - chef:build - - chef:tag -- id: chef-arm64 - label: ":docker: build chef arm64" + command: .expeditor/build-docker-images.sh amd64 + +- label: ":docker: build chef arm64" agents: queue: docker-linux-arm64 - plugins: - - chef/dobi#v0.1.1: - tasks: - - chef:build - - chef:tag
\ No newline at end of file + command: .expeditor/build-docker-images.sh arm64
\ No newline at end of file diff --git a/.expeditor/promote-docker-images.sh b/.expeditor/promote-docker-images.sh new file mode 100644 index 0000000000..32b4aea9d1 --- /dev/null +++ b/.expeditor/promote-docker-images.sh @@ -0,0 +1,42 @@ +#! /bin/bash + +export DOCKER_CLI_EXPERIMENTAL=enabled + +VERSION=$(cat VERSION) + +echo "--- Creating manifest for ${EXPEDITOR_TARGET_CHANNEL}" +docker manifest create "chef/chef:${EXPEDITOR_TARGET_CHANNEL}" \ + --amend "chef/chef:${VERSION}-arm64" \ + --amend "chef/chef:${VERSION}-amd64" + +echo "--- Pushing manifest for ${EXPEDITOR_TARGET_CHANNEL}" +docker manifest push "chef/chef:${EXPEDITOR_TARGET_CHANNEL}" + +if [[ $EXPEDITOR_TARGET_CHANNEL == "stable" ]]; then + echo "--- Creating manifest for latest" + docker manifest create "chef/chef:latest" \ + --amend "chef/chef:${VERSION}-arm64" \ + --amend "chef/chef:${VERSION}-amd64" + + echo "--- Pushing manifest for latest" + docker manifest push "chef/chef:latest" + + # split the version and add the tags for major and major.minor + version=(${VERSION//./ }) + + echo "--- Creating manifest for ${version[0]}" + docker manifest create "chef/chef:${version[0]}" \ + --amend "chef/chef:${VERSION}-arm64" \ + --amend "chef/chef:${VERSION}-amd64" + + echo "--- Pushing manifest for ${version[0]}" + docker manifest push "chef/chef:${version[0]}" + + echo "--- Creating manifest for ${version[0]}.${version[1]}" + docker manifest create "chef/chef:${version[0]}.${version[1]}" \ + --amend "chef/chef:${VERSION}-arm64" \ + --amend "chef/chef:${VERSION}-amd64" + + echo "--- Pushing manifest for ${version[0]}.${version[1]}" + docker manifest push "chef/chef:${version[0]}.${version[1]}" +fi
\ No newline at end of file |