-
-
Notifications
You must be signed in to change notification settings - Fork 20.4k
[CI] Automate Docker Hub release image publishing #40415
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
8e520ee
2b83d0c
8f214e0
041d4b8
426e477
d48a7c4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -309,16 +309,17 @@ steps: | |
| depends_on: ~ | ||
|
|
||
| - label: "Build release image - x86_64 - CPU" | ||
| key: build-cpu-release-image-x86 | ||
| depends_on: | ||
| - block-cpu-release-image-build | ||
| - input-release-version | ||
| agents: | ||
| queue: cpu_queue_release | ||
| commands: | ||
| - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" | ||
| - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --build-arg VLLM_CPU_X86=true --tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:$(buildkite-agent meta-data get release-version) --tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:latest --progress plain --target vllm-openai -f docker/Dockerfile.cpu ." | ||
| - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --build-arg VLLM_CPU_X86=true --tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v$(buildkite-agent meta-data get release-version | sed 's/^v//') --tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:latest --progress plain --target vllm-openai -f docker/Dockerfile.cpu ." | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:latest" | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:$(buildkite-agent meta-data get release-version)" | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v$(buildkite-agent meta-data get release-version | sed 's/^v//')" | ||
| env: | ||
| DOCKER_BUILDKIT: "1" | ||
|
|
||
|
|
@@ -327,16 +328,17 @@ steps: | |
| depends_on: ~ | ||
|
|
||
| - label: "Build release image - arm64 - CPU" | ||
| depends_on: | ||
| key: build-cpu-release-image-arm64 | ||
| depends_on: | ||
| - block-arm64-cpu-release-image-build | ||
| - input-release-version | ||
| agents: | ||
| queue: arm64_cpu_queue_release | ||
| commands: | ||
| - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" | ||
| - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$(buildkite-agent meta-data get release-version) --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:latest --progress plain --target vllm-openai -f docker/Dockerfile.cpu ." | ||
| - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v$(buildkite-agent meta-data get release-version | sed 's/^v//') --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:latest --progress plain --target vllm-openai -f docker/Dockerfile.cpu ." | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:latest" | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$(buildkite-agent meta-data get release-version)" | ||
| - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v$(buildkite-agent meta-data get release-version | sed 's/^v//')" | ||
| env: | ||
| DOCKER_BUILDKIT: "1" | ||
|
|
||
|
|
@@ -436,6 +438,41 @@ steps: | |
| DOCKER_BUILDKIT: "1" | ||
| DOCKERHUB_USERNAME: "vllmbot" | ||
|
|
||
| - block: "Publish release images to DockerHub" | ||
| key: block-publish-release-images | ||
| depends_on: | ||
| - annotate-release-workflow | ||
| - create-multi-arch-manifest-cuda-12-9 | ||
| - create-multi-arch-manifest-ubuntu2404 | ||
| - create-multi-arch-manifest-cuda-12-9-ubuntu2404 | ||
|
Comment on lines
+445
to
+447
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. does it not need to wait on create-multi-arch-manifest?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good catch — added |
||
| - build-rocm-release-image | ||
| - input-release-version | ||
| # Wait for CPU builds if their block steps were unblocked, so publish | ||
| # doesn't race the in-progress CPU build. allow_failure lets publish | ||
| # proceed when the operator legitimately leaves the CPU block steps | ||
| # unblocked or the CPU build fails. | ||
| - step: build-cpu-release-image-x86 | ||
| allow_failure: true | ||
| - step: build-cpu-release-image-arm64 | ||
| allow_failure: true | ||
| if: build.env("NIGHTLY") != "1" | ||
|
|
||
|
claude[bot] marked this conversation as resolved.
|
||
| - label: "Publish release images to DockerHub" | ||
| depends_on: | ||
| - block-publish-release-images | ||
| id: publish-release-images-dockerhub | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. use key instead of id
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done — switched to
Comment on lines
+460
to
+463
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 The new Extended reasoning...What the bug is
Why this is a consistency gapThe same author/file has already encoded the right pattern for the analogous case 350 lines earlier:
That pattern fits that case (the build group should run in BOTH modes — in nightly the upstream block is missing, so
Step-by-step trace of nightly behavior
In the happy path this is the intended outcome. The risk is that step (4) relies on Buildkite's behavior being stable across versions and matching the author's mental model — and unlike approach (1), there is nothing in the YAML that tells a future reader 'this step is intentionally nightly-gated'. Addressing the refutationA fellow verifier argues this is intentional behavior leveraging Buildkite's transitive-filter semantics, and that the lines 113-115 pattern is not analogous because the build group must run in both modes whereas the publish step must not. That refutation is correct on intent — the two cases ARE different, and the refutation is right that simply pasting But the refutation does not address the explicit-vs-implicit gap. The two existing patterns in this file ( ImpactBounded — in the most likely case the existing pattern works (Buildkite skips the publish step in nightly as intended). The downside is reduced readability and a small risk if Buildkite's filtered-dependency semantics ever change or differ across pipeline-upload code paths. Severity: nit. FixAdd the matching guard on the label step: - label: "Publish release images to DockerHub"
depends_on:
- block-publish-release-images
id: publish-release-images-dockerhub
if: build.env("NIGHTLY") != "1" # <-- add this
agents:
queue: small_cpu_queue_release
...This makes the nightly-skip intent explicit at the step that runs and matches the file's own convention of guarding nightly-conditional steps with their own |
||
| agents: | ||
| queue: small_cpu_queue_release | ||
| commands: | ||
| - "bash .buildkite/scripts/publish-release-images.sh" | ||
| plugins: | ||
| - docker-login#v3.0.0: | ||
| username: vllmbot | ||
| password-env: DOCKERHUB_TOKEN | ||
| env: | ||
| DOCKER_BUILDKIT: "1" | ||
| DOCKERHUB_USERNAME: "vllmbot" | ||
|
|
||
| - group: "Publish wheels" | ||
| key: "publish-wheels" | ||
| steps: | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it doesn't need to wait for release workflow annotation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done — dropped
annotate-release-workflowfrom the depends_on. The annotate step posts wheel download info and isn't a real publish prerequisite.