[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}"