[CI] Parallelize release image publishing (#51735)

Signed-off-by: khluu <khluu000@gmail.com> Co-authored-by: OpenAI Codex <codex@openai.com>

Kevin H. Luu committed Aug 10, 2026 at 16:38 UTC 8a9f9f762a47e24ed8b48a8472f6757346cb30ae
2 files changed +178 -141
.buildkite/release-pipeline.yaml
+10 -2
@@ -959,14 +959,22 @@ steps:
959 - step: build-cpu-release-image-arm64
960 allow_failure: true
961
962 - - label: "Publish release images to DockerHub"
962 + - label: "Publish {{matrix}} release images to DockerHub"
963 depends_on:
964 - block-publish-release-images
965 key: publish-release-images-dockerhub
966 agents:
967 queue: small_cpu_queue_release
968 commands:
969 - - "bash .buildkite/scripts/publish-release-images.sh"
969 + - "bash .buildkite/scripts/publish-release-images.sh {{matrix}}"
970 + matrix:
971 + - "cuda-13-0"
972 + - "cuda-12-9"
973 + - "cuda-13-0-ubuntu-24-04"
974 + - "cuda-12-9-ubuntu-24-04"
975 + - "rocm"
976 + - "xpu"
977 + - "cpu"
978 plugins:
979 - docker-login#v3.0.0:
980 username: vllmbot
.buildkite/scripts/publish-release-images.sh
+168 -139
@@ -2,12 +2,26 @@
2 # SPDX-License-Identifier: Apache-2.0
3 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
4 #
5 -# Publish release Docker images from ECR to DockerHub.
5 +# Publish a release Docker image family from ECR to DockerHub.
6 # Pulls per-arch images, tags with latest and versioned tags, pushes them,
7 # then creates and pushes multi-arch manifests.
8
9 set -euo pipefail
10
11 +TARGET="${1:-all}"
12 +case "${TARGET}" in
13 + cuda-13-0 | cuda-12-9 | cuda-13-0-ubuntu-24-04 | \
14 + cuda-12-9-ubuntu-24-04 | rocm | xpu | cpu | all) ;;
15 + *)
16 + echo "Usage: $0 {cuda-13-0|cuda-12-9|cuda-13-0-ubuntu-24-04|cuda-12-9-ubuntu-24-04|rocm|xpu|cpu|all}"
17 + exit 2
18 + ;;
19 +esac
20 +
21 +target_enabled() {
22 + [ "${TARGET}" = "all" ] || [ "${TARGET}" = "$1" ]
23 +}
24 +
25 RELEASE_VERSION=$(buildkite-agent meta-data get release-version --default "" | sed 's/^v//')
26 if [ -z "${RELEASE_VERSION}" ]; then
27 echo "ERROR: release-version metadata not set"
@@ -15,12 +29,10 @@ if [ -z "${RELEASE_VERSION}" ]; then
29 fi
30
31 COMMIT="$BUILDKITE_COMMIT"
18 -ROCM_BASE_CACHE_KEY=$(.buildkite/scripts/cache-rocm-base-wheels.sh key)
32
33 echo "========================================"
21 -echo "Publishing release images v${RELEASE_VERSION}"
34 +echo "Publishing ${TARGET} release images v${RELEASE_VERSION}"
35 echo " Commit: ${COMMIT}"
23 -echo " ROCm base cache key: ${ROCM_BASE_CACHE_KEY}"
36 echo "========================================"
37
38 # Login to ECR to pull staging images
@@ -29,122 +41,137 @@ aws ecr-public get-login-password --region us-east-1 | \
41
42 # ---- CUDA (default: 13.0) ----
43
32 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64
33 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64
34 -
35 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64 vllm/vllm-openai:latest-x86_64
36 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
37 -docker push vllm/vllm-openai:latest-x86_64
38 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
39 -
40 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64 vllm/vllm-openai:latest-aarch64
41 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
42 -docker push vllm/vllm-openai:latest-aarch64
43 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
44 -
45 -docker manifest rm vllm/vllm-openai:latest || true
46 -docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION} || true
47 -docker manifest create vllm/vllm-openai:latest vllm/vllm-openai:latest-x86_64 vllm/vllm-openai:latest-aarch64
48 -docker manifest create vllm/vllm-openai:v${RELEASE_VERSION} vllm/vllm-openai:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
49 -docker manifest push vllm/vllm-openai:latest
50 -docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}
44 +if target_enabled cuda-13-0; then
45 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64
46 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64
47 +
48 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64 vllm/vllm-openai:latest-x86_64
49 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
50 + docker push vllm/vllm-openai:latest-x86_64
51 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
52 +
53 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64 vllm/vllm-openai:latest-aarch64
54 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
55 + docker push vllm/vllm-openai:latest-aarch64
56 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
57 +
58 + docker manifest rm vllm/vllm-openai:latest || true
59 + docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION} || true
60 + docker manifest create vllm/vllm-openai:latest vllm/vllm-openai:latest-x86_64 vllm/vllm-openai:latest-aarch64
61 + docker manifest create vllm/vllm-openai:v${RELEASE_VERSION} vllm/vllm-openai:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
62 + docker manifest push vllm/vllm-openai:latest
63 + docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}
64 +fi
65
66 # ---- CUDA 12.9 ----
67
54 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129
55 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129
56 -
57 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129 vllm/vllm-openai:latest-x86_64-cu129
58 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
59 -docker push vllm/vllm-openai:latest-x86_64-cu129
60 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
61 -
62 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129 vllm/vllm-openai:latest-aarch64-cu129
63 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
64 -docker push vllm/vllm-openai:latest-aarch64-cu129
65 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
66 -
67 -docker manifest rm vllm/vllm-openai:latest-cu129 || true
68 -docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-cu129 || true
69 -docker manifest create vllm/vllm-openai:latest-cu129 vllm/vllm-openai:latest-x86_64-cu129 vllm/vllm-openai:latest-aarch64-cu129
70 -docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
71 -docker manifest push vllm/vllm-openai:latest-cu129
72 -docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu129
68 +if target_enabled cuda-12-9; then
69 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129
70 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129
71 +
72 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129 vllm/vllm-openai:latest-x86_64-cu129
73 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
74 + docker push vllm/vllm-openai:latest-x86_64-cu129
75 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
76 +
77 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129 vllm/vllm-openai:latest-aarch64-cu129
78 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
79 + docker push vllm/vllm-openai:latest-aarch64-cu129
80 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
81 +
82 + docker manifest rm vllm/vllm-openai:latest-cu129 || true
83 + docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-cu129 || true
84 + docker manifest create vllm/vllm-openai:latest-cu129 vllm/vllm-openai:latest-x86_64-cu129 vllm/vllm-openai:latest-aarch64-cu129
85 + docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
86 + docker manifest push vllm/vllm-openai:latest-cu129
87 + docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu129
88 +fi
89
90 # ---- Ubuntu 24.04 (CUDA 13.0) ----
91
76 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404
77 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404
78 -
79 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404 vllm/vllm-openai:latest-x86_64-ubuntu2404
80 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404
81 -docker push vllm/vllm-openai:latest-x86_64-ubuntu2404
82 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404
83 -
84 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404 vllm/vllm-openai:latest-aarch64-ubuntu2404
85 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
86 -docker push vllm/vllm-openai:latest-aarch64-ubuntu2404
87 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
88 -
89 -docker manifest rm vllm/vllm-openai:latest-ubuntu2404 || true
90 -docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404 || true
91 -docker manifest create vllm/vllm-openai:latest-ubuntu2404 vllm/vllm-openai:latest-x86_64-ubuntu2404 vllm/vllm-openai:latest-aarch64-ubuntu2404
92 -docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
93 -docker manifest push vllm/vllm-openai:latest-ubuntu2404
94 -docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404
92 +if target_enabled cuda-13-0-ubuntu-24-04; then
93 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404
94 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404
95 +
96 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404 vllm/vllm-openai:latest-x86_64-ubuntu2404
97 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404
98 + docker push vllm/vllm-openai:latest-x86_64-ubuntu2404
99 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404
100 +
101 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404 vllm/vllm-openai:latest-aarch64-ubuntu2404
102 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
103 + docker push vllm/vllm-openai:latest-aarch64-ubuntu2404
104 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
105 +
106 + docker manifest rm vllm/vllm-openai:latest-ubuntu2404 || true
107 + docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404 || true
108 + docker manifest create vllm/vllm-openai:latest-ubuntu2404 vllm/vllm-openai:latest-x86_64-ubuntu2404 vllm/vllm-openai:latest-aarch64-ubuntu2404
109 + docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-ubuntu2404
110 + docker manifest push vllm/vllm-openai:latest-ubuntu2404
111 + docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-ubuntu2404
112 +fi
113
114 # ---- Ubuntu 24.04 (CUDA 12.9) ----
115
98 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404
99 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404
100 -
101 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404
102 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404
103 -docker push vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404
104 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404
105 -
106 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404 vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
107 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
108 -docker push vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
109 -docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
110 -
111 -docker manifest rm vllm/vllm-openai:latest-cu129-ubuntu2404 || true
112 -docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404 || true
113 -docker manifest create vllm/vllm-openai:latest-cu129-ubuntu2404 vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404 vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
114 -docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
115 -docker manifest push vllm/vllm-openai:latest-cu129-ubuntu2404
116 -docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404
116 +if target_enabled cuda-12-9-ubuntu-24-04; then
117 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404
118 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404
119 +
120 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404
121 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404
122 + docker push vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404
123 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404
124 +
125 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404 vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
126 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-aarch64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
127 + docker push vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
128 + docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
129 +
130 + docker manifest rm vllm/vllm-openai:latest-cu129-ubuntu2404 || true
131 + docker manifest rm vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404 || true
132 + docker manifest create vllm/vllm-openai:latest-cu129-ubuntu2404 vllm/vllm-openai:latest-x86_64-cu129-ubuntu2404 vllm/vllm-openai:latest-aarch64-cu129-ubuntu2404
133 + docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129-ubuntu2404 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129-ubuntu2404
134 + docker manifest push vllm/vllm-openai:latest-cu129-ubuntu2404
135 + docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu129-ubuntu2404
136 +fi
137
138 # ---- ROCm ----
139
120 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm
121 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base
140 +if target_enabled rocm; then
141 + ROCM_BASE_CACHE_KEY=$(.buildkite/scripts/cache-rocm-base-wheels.sh key)
142 + echo "ROCm base cache key: ${ROCM_BASE_CACHE_KEY}"
143 +
144 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm
145 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base
146
123 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm vllm/vllm-openai-rocm:latest
124 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm vllm/vllm-openai-rocm:v${RELEASE_VERSION}
125 -docker push vllm/vllm-openai-rocm:latest
126 -docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}
147 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm vllm/vllm-openai-rocm:latest
148 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-rocm vllm/vllm-openai-rocm:v${RELEASE_VERSION}
149 + docker push vllm/vllm-openai-rocm:latest
150 + docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}
151
128 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:latest-base
129 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
130 -docker push vllm/vllm-openai-rocm:latest-base
131 -docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
152 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:latest-base
153 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
154 + docker push vllm/vllm-openai-rocm:latest-base
155 + docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
156 +fi
157
158 # ---- XPU ----
159
135 -docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu
160 +if target_enabled xpu; then
161 + docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu
162
137 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu vllm/vllm-openai-xpu:latest-x86_64
138 -docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64
139 -docker push vllm/vllm-openai-xpu:latest-x86_64
140 -docker push vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64
163 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu vllm/vllm-openai-xpu:latest-x86_64
164 + docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${COMMIT}-x86_64-xpu vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64
165 + docker push vllm/vllm-openai-xpu:latest-x86_64
166 + docker push vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64
167
142 -docker manifest rm vllm/vllm-openai-xpu:latest || true
143 -docker manifest rm vllm/vllm-openai-xpu:v${RELEASE_VERSION} || true
144 -docker manifest create vllm/vllm-openai-xpu:latest vllm/vllm-openai-xpu:latest-x86_64 --amend
145 -docker manifest create vllm/vllm-openai-xpu:v${RELEASE_VERSION} vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64 --amend
146 -docker manifest push vllm/vllm-openai-xpu:latest
147 -docker manifest push vllm/vllm-openai-xpu:v${RELEASE_VERSION}
168 + docker manifest rm vllm/vllm-openai-xpu:latest || true
169 + docker manifest rm vllm/vllm-openai-xpu:v${RELEASE_VERSION} || true
170 + docker manifest create vllm/vllm-openai-xpu:latest vllm/vllm-openai-xpu:latest-x86_64 --amend
171 + docker manifest create vllm/vllm-openai-xpu:v${RELEASE_VERSION} vllm/vllm-openai-xpu:v${RELEASE_VERSION}-x86_64 --amend
172 + docker manifest push vllm/vllm-openai-xpu:latest
173 + docker manifest push vllm/vllm-openai-xpu:v${RELEASE_VERSION}
174 +fi
175
176 # ---- CPU ----
177 # CPU images are behind separate block steps and may not have been built.
@@ -153,44 +180,46 @@ docker manifest push vllm/vllm-openai-xpu:v${RELEASE_VERSION}
180 # arch would leave `:latest-x86_64` pointing at the new release while the
181 # `:latest` multi-arch manifest still resolves to the previous release.
182
156 -CPU_X86_TAG=public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v${RELEASE_VERSION}
157 -CPU_ARM_TAG=public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v${RELEASE_VERSION}
158 -
159 -CPU_X86_AVAILABLE=false
160 -CPU_ARM_AVAILABLE=false
161 -docker manifest inspect "${CPU_X86_TAG}" >/dev/null 2>&1 && CPU_X86_AVAILABLE=true
162 -docker manifest inspect "${CPU_ARM_TAG}" >/dev/null 2>&1 && CPU_ARM_AVAILABLE=true
163 -
164 -if [ "$CPU_X86_AVAILABLE" = "true" ] && [ "$CPU_ARM_AVAILABLE" = "true" ]; then
165 - docker pull "${CPU_X86_TAG}"
166 - docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:latest-x86_64
167 - docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
168 - docker push vllm/vllm-openai-cpu:latest-x86_64
169 - docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
170 -
171 - docker pull "${CPU_ARM_TAG}"
172 - docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:latest-arm64
173 - docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
174 - docker push vllm/vllm-openai-cpu:latest-arm64
175 - docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
176 -
177 - docker manifest rm vllm/vllm-openai-cpu:latest || true
178 - docker manifest rm vllm/vllm-openai-cpu:v${RELEASE_VERSION} || true
179 - docker manifest create vllm/vllm-openai-cpu:latest vllm/vllm-openai-cpu:latest-x86_64 vllm/vllm-openai-cpu:latest-arm64
180 - docker manifest create vllm/vllm-openai-cpu:v${RELEASE_VERSION} vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
181 - docker manifest push vllm/vllm-openai-cpu:latest
182 - docker manifest push vllm/vllm-openai-cpu:v${RELEASE_VERSION}
183 -elif [ "$CPU_X86_AVAILABLE" = "false" ] && [ "$CPU_ARM_AVAILABLE" = "false" ]; then
184 - echo "WARNING: Neither CPU image found in ECR, skipping CPU publish (ensure block-cpu-release-image-build and block-arm64-cpu-release-image-build were unblocked and the builds finished pushing)"
185 -else
186 - # Partial state: one arch built, the other did not. Fail loudly rather than
187 - # ship a Docker Hub state where `:latest-${arch}` and `:latest` (multi-arch)
188 - # disagree on which release they point at.
189 - echo "ERROR: Partial CPU build detected (x86_64=${CPU_X86_AVAILABLE}, arm64=${CPU_ARM_AVAILABLE})."
190 - echo " Refusing to publish to avoid split-tag drift between per-arch and multi-arch tags."
191 - echo " Re-run the missing CPU build and retry, or manually publish if a single-arch release is intended."
192 - exit 1
183 +if target_enabled cpu; then
184 + CPU_X86_TAG=public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v${RELEASE_VERSION}
185 + CPU_ARM_TAG=public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v${RELEASE_VERSION}
186 +
187 + CPU_X86_AVAILABLE=false
188 + CPU_ARM_AVAILABLE=false
189 + docker manifest inspect "${CPU_X86_TAG}" >/dev/null 2>&1 && CPU_X86_AVAILABLE=true
190 + docker manifest inspect "${CPU_ARM_TAG}" >/dev/null 2>&1 && CPU_ARM_AVAILABLE=true
191 +
192 + if [ "$CPU_X86_AVAILABLE" = "true" ] && [ "$CPU_ARM_AVAILABLE" = "true" ]; then
193 + docker pull "${CPU_X86_TAG}"
194 + docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:latest-x86_64
195 + docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
196 + docker push vllm/vllm-openai-cpu:latest-x86_64
197 + docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
198 +
199 + docker pull "${CPU_ARM_TAG}"
200 + docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:latest-arm64
201 + docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
202 + docker push vllm/vllm-openai-cpu:latest-arm64
203 + docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
204 +
205 + docker manifest rm vllm/vllm-openai-cpu:latest || true
206 + docker manifest rm vllm/vllm-openai-cpu:v${RELEASE_VERSION} || true
207 + docker manifest create vllm/vllm-openai-cpu:latest vllm/vllm-openai-cpu:latest-x86_64 vllm/vllm-openai-cpu:latest-arm64
208 + docker manifest create vllm/vllm-openai-cpu:v${RELEASE_VERSION} vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
209 + docker manifest push vllm/vllm-openai-cpu:latest
210 + docker manifest push vllm/vllm-openai-cpu:v${RELEASE_VERSION}
211 + elif [ "$CPU_X86_AVAILABLE" = "false" ] && [ "$CPU_ARM_AVAILABLE" = "false" ]; then
212 + echo "WARNING: Neither CPU image found in ECR, skipping CPU publish (ensure block-cpu-release-image-build and block-arm64-cpu-release-image-build were unblocked and the builds finished pushing)"
213 + else
214 + # Partial state: one arch built, the other did not. Fail loudly rather than
215 + # ship a Docker Hub state where `:latest-${arch}` and `:latest` (multi-arch)
216 + # disagree on which release they point at.
217 + echo "ERROR: Partial CPU build detected (x86_64=${CPU_X86_AVAILABLE}, arm64=${CPU_ARM_AVAILABLE})."
218 + echo " Refusing to publish to avoid split-tag drift between per-arch and multi-arch tags."
219 + echo " Re-run the missing CPU build and retry, or manually publish if a single-arch release is intended."
220 + exit 1
221 + fi
222 fi
223
224 echo ""
196 -echo "Successfully published release images for v${RELEASE_VERSION}"
225 +echo "Successfully published ${TARGET} release images for v${RELEASE_VERSION}"