@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 2284461d02
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 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