From 820df545f2c48ea92911e2078389cc1a447bde3f Mon Sep 17 00:00:00 2001 From: ishandhanani <82981111+ishandhanani@users.noreply.github.com> Date: Tue, 3 Feb 2026 12:42:05 -0600 Subject: [PATCH] fix: add cu13 dev container to our release (#18192) --- .../release-docker-cu13-framework.yml | 157 ++++++++++++++++++ .github/workflows/release-docker.yml | 54 +++++- 2 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release-docker-cu13-framework.yml diff --git a/.github/workflows/release-docker-cu13-framework.yml b/.github/workflows/release-docker-cu13-framework.yml new file mode 100644 index 000000000..ddc538d35 --- /dev/null +++ b/.github/workflows/release-docker-cu13-framework.yml @@ -0,0 +1,157 @@ +name: Release CUDA 13 Framework Docker Images (Temporary) + +# Temporary workflow to build only versioned cu13 framework images +# Can be deleted after use + +on: + workflow_dispatch: + inputs: + version: + description: "Version to build (without v prefix, e.g., 0.5.8)" + required: true + +jobs: + publish-x86: + if: github.repository == 'sgl-project/sglang' + runs-on: x64-docker-build-node + steps: + - name: Delete huge unnecessary tools folder + run: rm -rf /opt/hostedtoolcache + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Free disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + docker-images: false + android: true + dotnet: true + haskell: true + large-packages: true + swap-storage: false + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Validate version + id: version + run: | + VERSION="${{ github.event.inputs.version }}" + if [ -z "$VERSION" ]; then + echo "::error::Version is empty" + exit 1 + fi + if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+'; then + echo "::error::Invalid version format: $VERSION (expected: X.Y.Z)" + exit 1 + fi + echo "version=${VERSION}" >> $GITHUB_OUTPUT + + - name: Build and Push AMD64 Framework (CUDA 13) + run: | + version=${{ steps.version.outputs.version }} + tag=v${version}-cu130-amd64 + + docker buildx build \ + --target framework \ + --platform linux/amd64 \ + --push \ + -f docker/Dockerfile \ + --build-arg CUDA_VERSION=13.0.1 \ + --build-arg BUILD_TYPE=all \ + --build-arg INSTALL_FLASHINFER_JIT_CACHE=1 \ + --build-arg GRACE_BLACKWELL=0 \ + --build-arg SGL_VERSION=${version} \ + -t lmsysorg/sglang:${tag} \ + --no-cache \ + . + + publish-arm64: + if: github.repository == 'sgl-project/sglang' + runs-on: arm-docker-build-node + steps: + - name: Delete huge unnecessary tools folder + run: rm -rf /opt/hostedtoolcache + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Validate version + id: version + run: | + VERSION="${{ github.event.inputs.version }}" + if [ -z "$VERSION" ]; then + echo "::error::Version is empty" + exit 1 + fi + if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+'; then + echo "::error::Invalid version format: $VERSION (expected: X.Y.Z)" + exit 1 + fi + echo "version=${VERSION}" >> $GITHUB_OUTPUT + + - name: Build and Push ARM64 Framework (CUDA 13) + run: | + version=${{ steps.version.outputs.version }} + tag=v${version}-cu130-arm64 + + docker buildx build \ + --target framework \ + --platform linux/arm64 \ + --push \ + -f docker/Dockerfile \ + --build-arg CUDA_VERSION=13.0.1 \ + --build-arg BUILD_TYPE=all \ + --build-arg INSTALL_FLASHINFER_JIT_CACHE=1 \ + --build-arg GRACE_BLACKWELL=1 \ + --build-arg SGL_VERSION=${version} \ + -t lmsysorg/sglang:${tag} \ + --no-cache \ + . + + create-manifest: + runs-on: ubuntu-22.04 + needs: [publish-x86, publish-arm64] + if: github.repository == 'sgl-project/sglang' + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create multi-arch manifest + run: | + version=${{ github.event.inputs.version }} + + # Create versioned CUDA 13 framework manifest + docker buildx imagetools create \ + -t lmsysorg/sglang:v${version}-cu130 \ + lmsysorg/sglang:v${version}-cu130-amd64 \ + lmsysorg/sglang:v${version}-cu130-arm64 + + # Create latest CUDA 13 framework manifest + docker buildx imagetools create \ + -t lmsysorg/sglang:latest-cu130 \ + lmsysorg/sglang:v${version}-cu130-amd64 \ + lmsysorg/sglang:v${version}-cu130-arm64 diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index d10f9261e..ecca43722 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -13,11 +13,11 @@ name: Release Docker Images on: push: tags: - - 'v[0-9]+.*' + - "v[0-9]+.*" workflow_dispatch: inputs: version: - description: 'Version to build (without v prefix, e.g., 0.5.7)' + description: "Version to build (without v prefix, e.g., 0.5.7)" required: true jobs: @@ -118,6 +118,25 @@ jobs: --no-cache \ . + - name: Build and Push AMD64 Framework (CUDA 13) + run: | + version=${{ steps.version.outputs.version }} + tag=v${version}-cu130-amd64 + + docker buildx build \ + --target framework \ + --platform linux/amd64 \ + --push \ + -f docker/Dockerfile \ + --build-arg CUDA_VERSION=13.0.1 \ + --build-arg BUILD_TYPE=${{ matrix.variant.build_type }} \ + --build-arg INSTALL_FLASHINFER_JIT_CACHE=1 \ + --build-arg GRACE_BLACKWELL=0 \ + --build-arg SGL_VERSION=${version} \ + -t lmsysorg/sglang:${tag} \ + --no-cache \ + . + - name: Build and Push AMD64 Runtime (CUDA 13) run: | version=${{ steps.version.outputs.version }} @@ -223,6 +242,25 @@ jobs: --no-cache \ . + - name: Build and Push ARM64 Framework (CUDA 13) + run: | + version=${{ steps.version.outputs.version }} + tag=v${version}-cu130-arm64 + + docker buildx build \ + --target framework \ + --platform linux/arm64 \ + --push \ + -f docker/Dockerfile \ + --build-arg CUDA_VERSION=13.0.1 \ + --build-arg BUILD_TYPE=${{ matrix.variant.build_type }} \ + --build-arg INSTALL_FLASHINFER_JIT_CACHE=1 \ + --build-arg GRACE_BLACKWELL=1 \ + --build-arg SGL_VERSION=${version} \ + -t lmsysorg/sglang:${tag} \ + --no-cache \ + . + - name: Build and Push ARM64 Runtime (CUDA 13) run: | version=${{ steps.version.outputs.version }} @@ -309,6 +347,18 @@ jobs: lmsysorg/sglang:v${version}-cu129-amd64-runtime \ lmsysorg/sglang:v${version}-cu129-arm64-runtime + # Create versioned CUDA 13 framework manifest + docker buildx imagetools create \ + -t lmsysorg/sglang:v${version}-cu130 \ + lmsysorg/sglang:v${version}-cu130-amd64 \ + lmsysorg/sglang:v${version}-cu130-arm64 + + # Create latest CUDA 13 framework manifest + docker buildx imagetools create \ + -t lmsysorg/sglang:latest-cu130 \ + lmsysorg/sglang:v${version}-cu130-amd64 \ + lmsysorg/sglang:v${version}-cu130-arm64 + # Create versioned CUDA 13 runtime manifest docker buildx imagetools create \ -t lmsysorg/sglang:v${version}-cu130-runtime \