@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 1333864408
Fork 0

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