Tag and push DockerHub images directly from build steps

Tag each per-arch image with both the ECR commit-pinned tag and the
DockerHub tags (vllm/vllm-omni:$COMMIT-$arch and :nightly-$arch) and
push them to DockerHub from the build step itself. The publish step
now just creates and pushes the multi-arch manifests inline, so the
push-nightly-builds.sh helper is no longer needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
khluuandClaude Opus 4.7 committed 2026-05-07 17:08:27 -07:00
1 parent 49afe9d31e
commit afbb8af51a
2 files changed
+30 -43

No files matched your search

+30 -13
View File
@@ -33,14 +33,22 @@ steps:
DOCKER_BUILDKIT=1 docker build \
--build-arg max_jobs=16 \
--tag public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-$(uname -m) \
--tag vllm/vllm-omni:$BUILDKITE_COMMIT-$(uname -m) \
--tag vllm/vllm-omni:nightly-$(uname -m) \
--progress plain \
-f docker/Dockerfile.cuda .
# push to ECR (per-arch, commit-pinned) for staging
- "docker push public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-$(uname -m)"
# re-tag to default image tag and push, just in case arm64 build fails
- "docker tag public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-$(uname -m) public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT"
- "docker push public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT"
# push to DockerHub (per-arch) so the multi-arch manifest can reference them
- "docker push vllm/vllm-omni:$BUILDKITE_COMMIT-$(uname -m)"
- "docker push vllm/vllm-omni:nightly-$(uname -m)"
plugins:
- docker-login#v3.0.0:
username: vllmbot
password-env: DOCKERHUB_TOKEN
env:
DOCKER_BUILDKIT: "1"
DOCKERHUB_USERNAME: "vllmbot"
- label: "Build release image - aarch64"
key: build-release-image-arm64
@@ -53,31 +61,40 @@ steps:
DOCKER_BUILDKIT=1 docker build \
--build-arg max_jobs=16 \
--tag public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-$(uname -m) \
--tag vllm/vllm-omni:$BUILDKITE_COMMIT-$(uname -m) \
--tag vllm/vllm-omni:nightly-$(uname -m) \
--progress plain \
-f docker/Dockerfile.cuda .
# push to ECR (per-arch, commit-pinned) for staging
- "docker push public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-$(uname -m)"
# push to DockerHub (per-arch) so the multi-arch manifest can reference them
- "docker push vllm/vllm-omni:$BUILDKITE_COMMIT-$(uname -m)"
- "docker push vllm/vllm-omni:nightly-$(uname -m)"
plugins:
- docker-login#v3.0.0:
username: vllmbot
password-env: DOCKERHUB_TOKEN
env:
DOCKER_BUILDKIT: "1"
DOCKERHUB_USERNAME: "vllmbot"
- label: "Create multi-arch manifest"
key: create-multi-arch-manifest
- label: "Publish multi-arch manifest to DockerHub"
key: publish-multi-arch-dockerhub
depends_on:
- build-release-image-x86
- build-release-image-arm64
agents:
queue: small_cpu_queue_release
commands:
# ECR multi-arch manifest (commit-pinned, useful for downstream tests)
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
- "docker manifest create public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-x86_64 public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT-aarch64 --amend"
- "docker manifest push public.ecr.aws/q9t5s3a7/vllm-omni-release-repo:$BUILDKITE_COMMIT"
- label: "Publish nightly multi-arch image to DockerHub"
depends_on:
- create-multi-arch-manifest
agents:
queue: small_cpu_queue_release
commands:
- "bash .buildkite/scripts/push-nightly-builds.sh"
# DockerHub multi-arch manifests (nightly + commit-pinned)
- "docker manifest create vllm/vllm-omni:nightly vllm/vllm-omni:nightly-x86_64 vllm/vllm-omni:nightly-aarch64 --amend"
- "docker manifest create vllm/vllm-omni:nightly-$BUILDKITE_COMMIT vllm/vllm-omni:nightly-x86_64 vllm/vllm-omni:nightly-aarch64 --amend"
- "docker manifest push vllm/vllm-omni:nightly"
- "docker manifest push vllm/vllm-omni:nightly-$BUILDKITE_COMMIT"
plugins:
- docker-login#v3.0.0:
username: vllmbot
-30
View File
@@ -1,30 +0,0 @@
#!/bin/bash
set -ex
# Pull per-arch images from ECR (built earlier in the pipeline) and re-publish
# them to Docker Hub under a nightly tag, then create and push a multi-arch
# manifest pointing at both per-arch tags.
ORIG_TAG_NAME="$BUILDKITE_COMMIT"
TAG_NAME="nightly"
DOCKERHUB_REPO="vllm/vllm-omni"
ECR_REPO="public.ecr.aws/q9t5s3a7/vllm-omni-release-repo"
echo "Pushing original tag $ORIG_TAG_NAME to new nightly tag name: $TAG_NAME"
# pull original arch-dependent images from AWS ECR Public
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
docker pull "$ECR_REPO:$ORIG_TAG_NAME-x86_64"
docker pull "$ECR_REPO:$ORIG_TAG_NAME-aarch64"
# tag arch-dependent images
docker tag "$ECR_REPO:$ORIG_TAG_NAME-x86_64" "$DOCKERHUB_REPO:$TAG_NAME-x86_64"
docker tag "$ECR_REPO:$ORIG_TAG_NAME-aarch64" "$DOCKERHUB_REPO:$TAG_NAME-aarch64"
# push arch-dependent images to DockerHub
docker push "$DOCKERHUB_REPO:$TAG_NAME-x86_64"
docker push "$DOCKERHUB_REPO:$TAG_NAME-aarch64"
# push arch-independent manifest to DockerHub
docker manifest create "$DOCKERHUB_REPO:$TAG_NAME" "$DOCKERHUB_REPO:$TAG_NAME-x86_64" "$DOCKERHUB_REPO:$TAG_NAME-aarch64" --amend
docker manifest create "$DOCKERHUB_REPO:$TAG_NAME-$BUILDKITE_COMMIT" "$DOCKERHUB_REPO:$TAG_NAME-x86_64" "$DOCKERHUB_REPO:$TAG_NAME-aarch64" --amend
docker manifest push "$DOCKERHUB_REPO:$TAG_NAME"
docker manifest push "$DOCKERHUB_REPO:$TAG_NAME-$BUILDKITE_COMMIT"