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 9, 10:00 UTC
[release] Minor fixes to release annotation and wheel upload (#33129)
Signed-off-by: khluu <khluu000@gmail.com>
Kevin H. Luu committed
Jan 29, 2026 at 12:09 UTC
2284461d02e22c51a7f5ac02f0f287402ba61989
3 files changed
+51
-63
.buildkite/release-pipeline.yaml
+2
-2
@@ -257,14 +257,14 @@ steps:
257
- input-release-version
258
- build-wheels
259
260
- - label: "Upload release wheels to PyPI and GitHub"
260
+ - label: "Upload release wheels to PyPI"
261
depends_on:
262
- block-upload-release-wheels
263
id: upload-release-wheels
264
agents:
265
queue: small_cpu_queue_postmerge
266
commands:
267
- - "bash .buildkite/scripts/upload-release-wheels.sh"
267
+ - "bash .buildkite/scripts/upload-release-wheels-pypi.sh"
268
269
# =============================================================================
270
# ROCm Release Pipeline (x86_64 only)
.buildkite/scripts/annotate-release.sh
+39
-17
@@ -11,58 +11,80 @@ fi
11
buildkite-agent annotate --style 'info' --context 'release-workflow' << EOF
12
To download the wheel (by commit):
13
\`\`\`
14
-aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux1_x86_64.whl .
15
-aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux2014_aarch64.whl .
14
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux_2_31_x86_64.whl .
15
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux_2_31_aarch64.whl .
16
17
-aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cu129-cp38-abi3-manylinux1_x86_64.whl .
18
-aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cu129-cp38-abi3-manylinux1_x86_64.whl .
19
-\`\`\`
17
+(Optional) For CUDA 13.0:
18
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cu130-cp38-abi3-manylinux_2_35_x86_64.whl .
19
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cu130-cp38-abi3-manylinux_2_35_aarch64.whl .
20
21
-To download the wheel (by version):
21
+(Optional) For CPU:
22
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cpu-cp38-abi3-manylinux_2_35_x86_64.whl .
23
+aws s3 cp s3://vllm-wheels/${BUILDKITE_COMMIT}/vllm-${RELEASE_VERSION}+cpu-cp38-abi3-manylinux_2_35_aarch64.whl .
24
\`\`\`
23
-aws s3 cp s3://vllm-wheels/${RELEASE_VERSION}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux1_x86_64.whl .
24
-aws s3 cp s3://vllm-wheels/${RELEASE_VERSION}/vllm-${RELEASE_VERSION}-cp38-abi3-manylinux2014_aarch64.whl .
25
26
-aws s3 cp s3://vllm-wheels/${RELEASE_VERSION}+cu129/vllm-${RELEASE_VERSION}+cu129-cp38-abi3-manylinux1_x86_64.whl .
27
-aws s3 cp s3://vllm-wheels/${RELEASE_VERSION}+cu130/vllm-${RELEASE_VERSION}+cu130-cp38-abi3-manylinux1_x86_64.whl .
28
-\`\`\`
26
27
To download and upload the image:
28
29
\`\`\`
30
+Download images:
31
+
32
docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64
33
docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64
34
+docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64-cu130
35
+docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64-cu130
36
docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm-base
37
docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm
38
39
+Tag and push images:
40
+
41
docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64 vllm/vllm-openai:x86_64
42
docker tag vllm/vllm-openai:x86_64 vllm/vllm-openai:latest-x86_64
43
docker tag vllm/vllm-openai:x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
44
docker push vllm/vllm-openai:latest-x86_64
45
docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64
46
47
+docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-x86_64-cu130 vllm/vllm-openai:x86_64-cu130
48
+docker tag vllm/vllm-openai:x86_64-cu130 vllm/vllm-openai:latest-x86_64-cu130
49
+docker tag vllm/vllm-openai:x86_64-cu130 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu130
50
+docker push vllm/vllm-openai:latest-x86_64-cu130
51
+docker push vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu130
52
+
53
docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64 vllm/vllm-openai:aarch64
54
docker tag vllm/vllm-openai:aarch64 vllm/vllm-openai:latest-aarch64
55
docker tag vllm/vllm-openai:aarch64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
56
docker push vllm/vllm-openai:latest-aarch64
57
docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
58
59
+docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-aarch64-cu130 vllm/vllm-openai:aarch64-cu130
60
+docker tag vllm/vllm-openai:aarch64-cu130 vllm/vllm-openai:latest-aarch64-cu130
61
+docker tag vllm/vllm-openai:aarch64-cu130 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu130
62
+docker push vllm/vllm-openai:latest-aarch64-cu130
63
+docker push vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu130
64
+
65
+docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-rocm
66
+docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:latest
67
+docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:v${RELEASE_VERSION}-rocm
68
+docker push vllm/vllm-openai-rocm:latest
69
+docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-rocm
70
+
71
+Create multi-arch manifest:
72
docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm-base vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base
73
docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:latest-base
74
docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
75
docker push vllm/vllm-openai-rocm:latest-base
76
docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base
77
56
-docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}
57
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:latest
58
-docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:v${RELEASE_VERSION}
59
-docker push vllm/vllm-openai-rocm:latest
60
-docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}
61
-
78
docker manifest rm vllm/vllm-openai:latest
79
docker manifest create vllm/vllm-openai:latest vllm/vllm-openai:latest-x86_64 vllm/vllm-openai:latest-aarch64
80
docker manifest create vllm/vllm-openai:v${RELEASE_VERSION} vllm/vllm-openai:v${RELEASE_VERSION}-x86_64 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64
81
docker manifest push vllm/vllm-openai:latest
82
docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}
83
+
84
+docker manifest rm vllm/vllm-openai:latest-cu130
85
+docker manifest create vllm/vllm-openai:latest-cu130 vllm/vllm-openai:latest-x86_64-cu130 vllm/vllm-openai:latest-aarch64-cu130
86
+docker manifest create vllm/vllm-openai:v${RELEASE_VERSION}-cu130 vllm/vllm-openai:v${RELEASE_VERSION}-x86_64-cu130 vllm/vllm-openai:v${RELEASE_VERSION}-aarch64-cu130
87
+docker manifest push vllm/vllm-openai:latest-cu130
88
+docker manifest push vllm/vllm-openai:v${RELEASE_VERSION}-cu130
89
\`\`\`
90
EOF
.buildkite/scripts/upload-release-wheels-pypi.sh
renamed
+10
-44
@@ -7,17 +7,19 @@ SUBPATH=$BUILDKITE_COMMIT
7
S3_COMMIT_PREFIX="s3://$BUCKET/$SUBPATH/"
8
9
RELEASE_VERSION=$(buildkite-agent meta-data get release-version)
10
-echo "Release version from Buildkite: $RELEASE_VERSION"
10
GIT_VERSION=$(git describe --exact-match --tags $BUILDKITE_COMMIT 2>/dev/null)
12
-if [ -z "$GIT_VERSION" ]; then
11
+
12
+echo "Release version from Buildkite: $RELEASE_VERSION"
13
+
14
+if [[ -z "$GIT_VERSION" ]]; then
15
echo "[FATAL] Not on a git tag, cannot create release."
16
exit 1
17
else
18
echo "Git version for commit $BUILDKITE_COMMIT: $GIT_VERSION"
19
fi
20
# sanity check for version mismatch
19
-if [ "$RELEASE_VERSION" != "$GIT_VERSION" ]; then
20
- if [ "$FORCE_RELEASE_IGNORE_VERSION_MISMATCH" == "true" ]; then
21
+if [[ "$RELEASE_VERSION" != "$GIT_VERSION" ]]; then
22
+ if [[ "$FORCE_RELEASE_IGNORE_VERSION_MISMATCH" == "true" ]]; then
23
echo "[WARNING] Force release and ignore version mismatch"
24
else
25
echo "[FATAL] Release version from Buildkite does not match Git version."
@@ -27,7 +29,7 @@ fi
29
PURE_VERSION=${RELEASE_VERSION#v} # remove leading 'v'
30
31
# check pypi token
30
-if [ -z "$PYPI_TOKEN" ]; then
32
+if [[ -z "$PYPI_TOKEN" ]]; then
33
echo "[FATAL] PYPI_TOKEN is not set."
34
exit 1
35
else
@@ -35,41 +37,8 @@ else
37
export TWINE_PASSWORD="$PYPI_TOKEN"
38
fi
39
38
-# check github token
39
-if [ -z "$GITHUB_TOKEN" ]; then
40
- echo "[FATAL] GITHUB_TOKEN is not set."
41
- exit 1
42
-else
43
- export GH_TOKEN="$GITHUB_TOKEN"
44
-fi
45
-
40
set -x # avoid printing secrets above
41
48
-# download gh CLI from github
49
-# Get latest gh CLI version from GitHub API
50
-GH_VERSION=$(curl -s https://api.github.com/repos/cli/cli/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/^v//')
51
-if [ -z "$GH_VERSION" ]; then
52
- echo "[FATAL] Failed to get latest gh CLI version from GitHub"
53
- exit 1
54
-fi
55
-echo "Downloading gh CLI version: $GH_VERSION"
56
-GH_TARBALL="gh_${GH_VERSION}_linux_amd64.tar.gz"
57
-GH_URL="https://github.com/cli/cli/releases/download/v${GH_VERSION}/${GH_TARBALL}"
58
-GH_INSTALL_DIR="/tmp/gh-install"
59
-mkdir -p "$GH_INSTALL_DIR"
60
-pushd "$GH_INSTALL_DIR"
61
-curl -L -o "$GH_TARBALL" "$GH_URL"
62
-tar -xzf "$GH_TARBALL"
63
-GH_BIN=$(realpath $(find . -name "gh" -type f -executable | head -n 1))
64
-if [ -z "$GH_BIN" ]; then
65
- echo "[FATAL] Failed to find gh CLI executable"
66
- exit 1
67
-fi
68
-echo "gh CLI downloaded successfully, version: $($GH_BIN --version)"
69
-echo "Last 5 releases on GitHub:" # as a sanity check of gh and GH_TOKEN
70
-command "$GH_BIN" release list --limit 5
71
-popd
72
-
42
# install twine from pypi
43
python3 -m venv /tmp/vllm-release-env
44
source /tmp/vllm-release-env/bin/activate
@@ -89,16 +58,13 @@ echo "Wheels copied to local directory"
58
git archive --format=tar.gz --output="$DIST_DIR/vllm-${PURE_VERSION}.tar.gz" $BUILDKITE_COMMIT
59
ls -la $DIST_DIR
60
92
-
61
# upload wheels to PyPI (only default variant, i.e. files without '+' in the name)
62
PYPI_WHEEL_FILES=$(find $DIST_DIR -name "vllm-${PURE_VERSION}*.whl" -not -name "*+*")
95
-if [ -z "$PYPI_WHEEL_FILES" ]; then
63
+if [[ -z "$PYPI_WHEEL_FILES" ]]; then
64
echo "No default variant wheels found, quitting..."
65
exit 1
66
fi
67
+
68
python3 -m twine check $PYPI_WHEEL_FILES
100
-python3 -m twine --non-interactive --verbose upload $PYPI_WHEEL_FILES
69
+python3 -m twine upload --non-interactive --verbose $PYPI_WHEEL_FILES
70
echo "Wheels uploaded to PyPI"
102
-
103
-# create release on GitHub with the release version and all wheels
104
-command "$GH_BIN" release create $GIT_VERSION -d --latest --notes-from-tag --verify-tag $DIST_DIR/*.whl