A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 4, 06:15 UTC
[CI] Automate Docker Hub release image publishing (#40415)
Signed-off-by: khluu <khluu000@gmail.com>
Kevin H. Luu committed
May 5, 2026 at 17:15 UTC
13338644082bdab10c4ff017de1a97c03ba62524
4 files changed
+221
-95
.buildkite/release-pipeline.yaml
+38
-1
@@ -309,6 +309,7 @@ steps:
309
depends_on: ~
310
311
- label: "Build release image - x86_64 - CPU"
312
+ key: build-cpu-release-image-x86
313
depends_on:
314
- block-cpu-release-image-build
315
- input-release-version
@@ -327,7 +328,8 @@ steps:
328
depends_on: ~
329
330
- label: "Build release image - arm64 - CPU"
330
- depends_on:
331
+ key: build-cpu-release-image-arm64
332
+ depends_on:
333
- block-arm64-cpu-release-image-build
334
- input-release-version
335
agents:
@@ -436,6 +438,41 @@ steps:
438
DOCKER_BUILDKIT: "1"
439
DOCKERHUB_USERNAME: "vllmbot"
440
441
+ - block: "Publish release images to DockerHub"
442
+ key: block-publish-release-images
443
+ depends_on:
444
+ - create-multi-arch-manifest
445
+ - create-multi-arch-manifest-cuda-12-9
446
+ - create-multi-arch-manifest-ubuntu2404
447
+ - create-multi-arch-manifest-cuda-12-9-ubuntu2404
448
+ - build-rocm-release-image
449
+ - input-release-version
450
+ # Wait for CPU builds if their block steps were unblocked, so publish
451
+ # doesn't race the in-progress CPU build. allow_failure lets publish
452
+ # proceed when the operator legitimately leaves the CPU block steps
453
+ # unblocked or the CPU build fails.
454
+ - step: build-cpu-release-image-x86
455
+ allow_failure: true
456
+ - step: build-cpu-release-image-arm64
457
+ allow_failure: true
458
+ if: build.env("NIGHTLY") != "1"
459
+
460
+ - label: "Publish release images to DockerHub"
461
+ depends_on:
462
+ - block-publish-release-images
463
+ key: publish-release-images-dockerhub
464
+ agents:
465
+ queue: small_cpu_queue_release
466
+ commands:
467
+ - "bash .buildkite/scripts/publish-release-images.sh"
468
+ plugins:
469
+ - docker-login#v3.0.0:
470
+ username: vllmbot
471
+ password-env: DOCKERHUB_TOKEN
472
+ env:
473
+ DOCKER_BUILDKIT: "1"
474
+ DOCKERHUB_USERNAME: "vllmbot"
475
+
476
- group: "Publish wheels"
477
key: "publish-wheels"
478
steps:
.buildkite/scripts/annotate-release.sh
+1
-93
@@ -8,8 +8,6 @@ if [ -z "${RELEASE_VERSION}" ]; then
8
RELEASE_VERSION="1.0.0.dev"
9
fi
10
11
-ROCM_BASE_CACHE_KEY=$(.buildkite/scripts/cache-rocm-base-wheels.sh key)
12
-
11
buildkite-agent annotate --style 'info' --context 'release-workflow' << EOF
12
To download the wheel (by commit):
13
\`\`\`
@@ -25,95 +23,5 @@ aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cpu-cp38-
23
aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cpu-cp38-abi3-manylinux_2_35_aarch64.whl .
24
\`\`\`
25
28
-
29
-To download and upload the image:
30
-
31
-\`\`\`
32
-# Download images:
33
-
34
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64
35
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64
36
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64-cu129
37
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64-cu129
38
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base
39
-docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm
40
-docker pull public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v${RELEASE_VERSION}
41
-docker pull public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v${RELEASE_VERSION}
42
-
43
-# Tag and push images:
44
-
45
-## CUDA
46
-
47
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64 vllm/vllm-openai:x86_64
48
-docker tag vllm/vllm-openai:x86_64 vllm/vllm-openai:latest-x86_64
49
-docker tag vllm/vllm-openai: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:${BUILDKITE_COMMIT}-x86_64-cu129 vllm/vllm-openai:x86_64-cu129
54
-docker tag vllm/vllm-openai:x86_64-cu129 vllm/vllm-openai:latest-x86_64-cu129
55
-docker tag vllm/vllm-openai:x86_64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
56
-docker push vllm/vllm-openai:latest-x86_64-cu129
57
-docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu129
58
-
59
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64 vllm/vllm-openai:aarch64
60
-docker tag vllm/vllm-openai:aarch64 vllm/vllm-openai:latest-aarch64
61
-docker tag vllm/vllm-openai:aarch64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
62
-docker push vllm/vllm-openai:latest-aarch64
63
-docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
64
-
65
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64-cu129 vllm/vllm-openai:aarch64-cu129
66
-docker tag vllm/vllm-openai:aarch64-cu129 vllm/vllm-openai:latest-aarch64-cu129
67
-docker tag vllm/vllm-openai:aarch64-cu129 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
68
-docker push vllm/vllm-openai:latest-aarch64-cu129
69
-docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu129
70
-
71
-## ROCm
72
-
73
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}
74
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:latest
75
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:v${RELEASE_VERSION}
76
-docker push vllm/vllm-openai-rocm:latest
77
-docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}
78
-
79
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base
80
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:latest-base
81
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
82
-docker push vllm/vllm-openai-rocm:latest-base
83
-docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
84
-
85
-## CPU
86
-
87
-docker tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v${RELEASE_VERSION} vllm/vllm-openai-cpu:x86_64
88
-docker tag vllm/vllm-openai-cpu:x86_64 vllm/vllm-openai-cpu:latest-x86_64
89
-docker tag vllm/vllm-openai-cpu:x86_64 vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
90
-docker push vllm/vllm-openai-cpu:latest-x86_64
91
-docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
92
-
93
-docker tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v${RELEASE_VERSION} vllm/vllm-openai-cpu:arm64
94
-docker tag vllm/vllm-openai-cpu:arm64 vllm/vllm-openai-cpu:latest-arm64
95
-docker tag vllm/vllm-openai-cpu:arm64 vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
96
-docker push vllm/vllm-openai-cpu:latest-arm64
97
-docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
98
-
99
-# Create multi-arch manifest:
100
-
101
-docker manifest rm vllm/vllm-openai:latest
102
-docker manifest create vllm/vllm-openai:latest vllm/vllm-openai:latest-x86_64 vllm/vllm-openai:latest-aarch64
103
-docker manifest create vllm/vllm-openai:v${RELEASE_VERSION} vllm/vllm-openai:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
104
-docker manifest push vllm/vllm-openai:latest
105
-docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}
106
-
107
-docker manifest rm vllm/vllm-openai:latest-cu129
108
-docker manifest create vllm/vllm-openai:latest-cu129 vllm/vllm-openai:latest-x86_64-cu129 vllm/vllm-openai:latest-aarch64-cu129
109
-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
110
-docker manifest push vllm/vllm-openai:latest-cu129
111
-docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu129
112
-
113
-docker manifest rm vllm/vllm-openai-cpu:latest || true
114
-docker manifest create vllm/vllm-openai-cpu:latest vllm/vllm-openai-cpu:latest-x86_64 vllm/vllm-openai-cpu:latest-arm64
115
-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
116
-docker manifest push vllm/vllm-openai-cpu:latest
117
-docker manifest push vllm/vllm-openai-cpu:v${RELEASE_VERSION}
118
-\`\`\`
26
+Docker images are published automatically by the "Publish release images to DockerHub" pipeline step.
27
EOF
.buildkite/scripts/publish-release-images.sh
new
+180
@@ -0,0 +1,180 @@
1
+#!/bin/bash
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.
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
+RELEASE_VERSION=$(buildkite-agent meta-data get release-version --default "" | sed 's/^v//')
12
+if [ -z "${RELEASE_VERSION}" ]; then
13
+ echo "ERROR: release-version metadata not set"
14
+ exit 1
15
+fi
16
+
17
+COMMIT="$BUILDKITE_COMMIT"
18
+ROCM_BASE_CACHE_KEY=$(.buildkite/scripts/cache-rocm-base-wheels.sh key)
19
+
20
+echo "========================================"
21
+echo "Publishing release images v${RELEASE_VERSION}"
22
+echo " Commit: ${COMMIT}"
23
+echo " ROCm base cache key: ${ROCM_BASE_CACHE_KEY}"
24
+echo "========================================"
25
+
26
+# Login to ECR to pull staging images
27
+aws ecr-public get-login-password --region us-east-1 | \
28
+ docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
29
+
30
+# ---- CUDA (default: 13.0) ----
31
+
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}
51
+
52
+# ---- CUDA 12.9 ----
53
+
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
73
+
74
+# ---- Ubuntu 24.04 (CUDA 13.0) ----
75
+
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
95
+
96
+# ---- Ubuntu 24.04 (CUDA 12.9) ----
97
+
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
117
+
118
+# ---- ROCm ----
119
+
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
122
+
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}
127
+
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
132
+
133
+# ---- CPU ----
134
+# CPU images are behind separate block steps and may not have been built.
135
+# All-or-nothing: inspect both arches first, then either publish everything
136
+# (per-arch + multi-arch manifest) or skip everything. Publishing only one
137
+# arch would leave `:latest-x86_64` pointing at the new release while the
138
+# `:latest` multi-arch manifest still resolves to the previous release.
139
+
140
+CPU_X86_TAG=public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v${RELEASE_VERSION}
141
+CPU_ARM_TAG=public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:v${RELEASE_VERSION}
142
+
143
+CPU_X86_AVAILABLE=false
144
+CPU_ARM_AVAILABLE=false
145
+docker manifest inspect "${CPU_X86_TAG}" >/dev/null 2>&1 && CPU_X86_AVAILABLE=true
146
+docker manifest inspect "${CPU_ARM_TAG}" >/dev/null 2>&1 && CPU_ARM_AVAILABLE=true
147
+
148
+if [ "$CPU_X86_AVAILABLE" = "true" ] && [ "$CPU_ARM_AVAILABLE" = "true" ]; then
149
+ docker pull "${CPU_X86_TAG}"
150
+ docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:latest-x86_64
151
+ docker tag "${CPU_X86_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
152
+ docker push vllm/vllm-openai-cpu:latest-x86_64
153
+ docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-x86_64
154
+
155
+ docker pull "${CPU_ARM_TAG}"
156
+ docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:latest-arm64
157
+ docker tag "${CPU_ARM_TAG}" vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
158
+ docker push vllm/vllm-openai-cpu:latest-arm64
159
+ docker push vllm/vllm-openai-cpu:v${RELEASE_VERSION}-arm64
160
+
161
+ docker manifest rm vllm/vllm-openai-cpu:latest || true
162
+ docker manifest rm vllm/vllm-openai-cpu:v${RELEASE_VERSION} || true
163
+ docker manifest create vllm/vllm-openai-cpu:latest vllm/vllm-openai-cpu:latest-x86_64 vllm/vllm-openai-cpu:latest-arm64
164
+ 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
165
+ docker manifest push vllm/vllm-openai-cpu:latest
166
+ docker manifest push vllm/vllm-openai-cpu:v${RELEASE_VERSION}
167
+elif [ "$CPU_X86_AVAILABLE" = "false" ] && [ "$CPU_ARM_AVAILABLE" = "false" ]; then
168
+ 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)"
169
+else
170
+ # Partial state: one arch built, the other did not. Fail loudly rather than
171
+ # ship a Docker Hub state where `:latest-${arch}` and `:latest` (multi-arch)
172
+ # disagree on which release they point at.
173
+ echo "ERROR: Partial CPU build detected (x86_64=${CPU_X86_AVAILABLE}, arm64=${CPU_ARM_AVAILABLE})."
174
+ echo " Refusing to publish to avoid split-tag drift between per-arch and multi-arch tags."
175
+ echo " Re-run the missing CPU build and retry, or manually publish if a single-arch release is intended."
176
+ exit 1
177
+fi
178
+
179
+echo ""
180
+echo "Successfully published release images for v${RELEASE_VERSION}"
.buildkite/scripts/upload-release-wheels-pypi.sh
+2
-1
@@ -39,10 +39,11 @@ fi
39
40
set -x # avoid printing secrets above
41
42
-# install twine from pypi
42
+# install twine and sdist build prerequisites from pypi
43
python3 -m venv /tmp/vllm-release-env
44
source /tmp/vllm-release-env/bin/activate
45
pip install twine
46
+pip install -r requirements/build/cuda.txt
47
python3 -m twine --version
48
49
# copy release wheels to local directory