94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
234 lines
8.1 KiB
YAML
234 lines
8.1 KiB
YAML
name: Release Branch Cut
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
branch_name:
|
|
description: 'Branch name to create (e.g., release/v0.5.7)'
|
|
required: true
|
|
type: string
|
|
commit_sha:
|
|
description: 'Commit SHA from main to cut the release branch from (defaults to latest main)'
|
|
required: false
|
|
type: string
|
|
default: ''
|
|
|
|
permissions:
|
|
actions: write
|
|
contents: write
|
|
issues: read
|
|
pull-requests: read
|
|
|
|
jobs:
|
|
cut-release-branch:
|
|
if: github.repository == 'sgl-project/sglang'
|
|
runs-on: ubuntu-latest
|
|
environment: 'prod'
|
|
outputs:
|
|
branch_name: ${{ steps.set_output.outputs.branch_name }}
|
|
branch_exists: ${{ steps.check_exists.outputs.branch_exists }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
fetch-depth: 0
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Validate branch name
|
|
run: |
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
|
|
if [ -z "$BRANCH_NAME" ]; then
|
|
echo "::error::Branch name is required"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate branch name format (should start with release/)
|
|
if [[ ! "$BRANCH_NAME" =~ ^release/ ]]; then
|
|
echo "::warning::Branch name '$BRANCH_NAME' does not follow convention 'release/vX.Y.Z'"
|
|
fi
|
|
|
|
echo "Branch name: $BRANCH_NAME"
|
|
|
|
- name: Validate commit SHA
|
|
id: validate
|
|
run: |
|
|
COMMIT_SHA="${{ github.event.inputs.commit_sha }}"
|
|
|
|
# If no commit SHA provided, use latest main
|
|
if [ -z "$COMMIT_SHA" ]; then
|
|
COMMIT_SHA=$(git rev-parse HEAD)
|
|
echo "No commit SHA provided, using latest main: $COMMIT_SHA"
|
|
fi
|
|
|
|
# Verify the commit exists and is on main
|
|
if ! git cat-file -t "$COMMIT_SHA" > /dev/null 2>&1; then
|
|
echo "::error::Commit SHA '$COMMIT_SHA' does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if commit is an ancestor of main (i.e., is on main branch)
|
|
if ! git merge-base --is-ancestor "$COMMIT_SHA" main; then
|
|
echo "::error::Commit SHA '$COMMIT_SHA' is not on the main branch"
|
|
exit 1
|
|
fi
|
|
|
|
echo "COMMIT_SHA=$COMMIT_SHA" >> $GITHUB_OUTPUT
|
|
echo "Validated commit SHA: $COMMIT_SHA"
|
|
|
|
- name: Check if branch already exists
|
|
id: check_exists
|
|
run: |
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
|
|
if git ls-remote --heads origin "$BRANCH_NAME" | grep -q "$BRANCH_NAME"; then
|
|
echo "Branch '$BRANCH_NAME' already exists, skipping creation and proceeding to downstream tests"
|
|
echo "branch_exists=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "Branch '$BRANCH_NAME' does not exist, proceeding with creation"
|
|
echo "branch_exists=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Create release branch
|
|
if: steps.check_exists.outputs.branch_exists != 'true'
|
|
run: |
|
|
COMMIT_SHA="${{ steps.validate.outputs.COMMIT_SHA }}"
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
|
|
git config user.name "sglang-bot"
|
|
git config user.email "sglang-bot@users.noreply.github.com"
|
|
|
|
# Create branch from the specified commit
|
|
git checkout -b "$BRANCH_NAME" "$COMMIT_SHA"
|
|
|
|
echo "Successfully created branch '$BRANCH_NAME' from commit '$COMMIT_SHA'"
|
|
|
|
- name: Update version references in documentation
|
|
if: steps.check_exists.outputs.branch_exists != 'true'
|
|
run: |
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
# Extract version from branch name (e.g., release/v0.5.8 -> v0.5.8)
|
|
VERSION=$(echo "$BRANCH_NAME" | sed 's/release\///')
|
|
|
|
# Update git clone version references in docs
|
|
sed -i "s/git clone -b v[0-9]\+\.[0-9]\+\.[0-9]\+\.\?post\?[0-9]*/git clone -b $VERSION/" docs/get_started/install.md
|
|
sed -i "s/git clone -b v[0-9]\+\.[0-9]\+\.[0-9]\+\.\?post\?[0-9]*/git clone -b $VERSION/" docs/platforms/amd_gpu.md
|
|
|
|
# Check if any changes were made
|
|
if git diff --quiet; then
|
|
echo "No version references needed updating"
|
|
else
|
|
git add docs/get_started/install.md docs/platforms/amd_gpu.md
|
|
git commit -m "docs: update version references to $VERSION"
|
|
echo "Updated version references to $VERSION"
|
|
fi
|
|
|
|
- name: Push release branch
|
|
if: steps.check_exists.outputs.branch_exists != 'true'
|
|
run: |
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
git push origin "$BRANCH_NAME"
|
|
echo "Successfully pushed branch '$BRANCH_NAME'"
|
|
|
|
- name: Emit branch_name output
|
|
id: set_output
|
|
run: |
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
|
|
|
|
- name: Summary
|
|
run: |
|
|
COMMIT_SHA="${{ steps.validate.outputs.COMMIT_SHA }}"
|
|
BRANCH_NAME="${{ github.event.inputs.branch_name }}"
|
|
BRANCH_EXISTS="${{ steps.check_exists.outputs.branch_exists }}"
|
|
|
|
if [ "$BRANCH_EXISTS" = "true" ]; then
|
|
STATUS="Branch already existed — creation skipped, downstream tests will run"
|
|
else
|
|
STATUS="Newly created"
|
|
fi
|
|
|
|
echo "## Release Branch Cut Summary" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
|
|
echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Branch | \`$BRANCH_NAME\` |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Commit | \`$COMMIT_SHA\` |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Status | $STATUS |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Triggered by | @${{ github.actor }} |" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### Next Steps" >> $GITHUB_STEP_SUMMARY
|
|
echo "1. Tests are automatically triggered on the release branch" >> $GITHUB_STEP_SUMMARY
|
|
echo "2. Apply any hotfixes if needed" >> $GITHUB_STEP_SUMMARY
|
|
echo "3. Create a tag to trigger release: \`gh workflow run release-tag.yml -f version=X.Y.Z -f ref=$BRANCH_NAME\`" >> $GITHUB_STEP_SUMMARY
|
|
|
|
run-pr-tests-nvidia:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/pr-test.yml
|
|
with:
|
|
git_ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
run_all_tests: true
|
|
skip_pr_test_health_check: true
|
|
secrets: inherit
|
|
|
|
run-pr-tests-amd:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/pr-test-amd.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
run_all_tests: true
|
|
secrets: inherit
|
|
|
|
run-pr-test-npu:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/pr-test-npu.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
run_all_tests: true
|
|
secrets: inherit
|
|
|
|
run-pr-tests-xeon:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/pr-test-xeon.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
run_all_tests: true
|
|
secrets: inherit
|
|
|
|
run-pr-tests-xpu:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/pr-test-xpu.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
run_all_tests: true
|
|
secrets: inherit
|
|
|
|
run-nightly-tests-nvidia:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/nightly-test-nvidia.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
secrets: inherit
|
|
|
|
run-nightly-tests-amd:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/nightly-test-amd.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
secrets: inherit
|
|
|
|
run-nightly-tests-npu:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/nightly-test-npu.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
secrets: inherit
|
|
|
|
run-nightly-tests-intel:
|
|
needs: cut-release-branch
|
|
uses: ./.github/workflows/nightly-test-intel.yml
|
|
with:
|
|
ref: ${{ needs.cut-release-branch.outputs.branch_name }}
|
|
secrets: inherit
|