From 921e14dcac53cd8dcd08af939f5db7309faf9e0c Mon Sep 17 00:00:00 2001 From: Kangyan-Zhou Date: Sat, 25 Apr 2026 14:09:34 -0700 Subject: [PATCH] [CI] release-docker-deepseek-v4: select which flavors to push (#23730) Co-authored-by: Claude Opus 4.7 (1M context) --- .../workflows/release-docker-deepseek-v4.yml | 74 ++++++++++++++----- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-docker-deepseek-v4.yml b/.github/workflows/release-docker-deepseek-v4.yml index a5bd5290f..cfe3ae93b 100644 --- a/.github/workflows/release-docker-deepseek-v4.yml +++ b/.github/workflows/release-docker-deepseek-v4.yml @@ -12,35 +12,73 @@ on: description: "Docker Hub destination repository. Default: lmsysorg/sglang-staging (set to lmsysorg/sglang for production release)." required: false default: "lmsysorg/sglang-staging" + build_hopper: + description: "Build and push the Hopper (H200) image." + required: false + type: boolean + default: true + build_blackwell: + description: "Build and push the Blackwell (B200) image." + required: false + type: boolean + default: true + build_b300: + description: "Build and push the B300 image." + required: false + type: boolean + default: true + build_grace_blackwell: + description: "Build and push the Grace Blackwell (ARM) image." + required: false + type: boolean + default: true concurrency: group: release-docker-deepseek-v4-${{ inputs.repository }} cancel-in-progress: true jobs: - build-deepseek-v4: + build-matrix: if: ${{ github.repository == 'sgl-project/sglang' }} + runs-on: ubuntu-latest + outputs: + include: ${{ steps.set.outputs.include }} + steps: + - id: set + env: + BUILD_HOPPER: ${{ inputs.build_hopper }} + BUILD_BLACKWELL: ${{ inputs.build_blackwell }} + BUILD_B300: ${{ inputs.build_b300 }} + BUILD_GRACE_BLACKWELL: ${{ inputs.build_grace_blackwell }} + run: | + entries=() + if [ "$BUILD_HOPPER" = "true" ]; then + entries+=('{"runner":"x64-docker-build-node","platform":"linux/amd64","dockerfile":"docker/deepseek_v4_h200.Dockerfile","tag":"deepseek-v4-hopper"}') + fi + if [ "$BUILD_BLACKWELL" = "true" ]; then + entries+=('{"runner":"x64-docker-build-node","platform":"linux/amd64","dockerfile":"docker/deepseek_v4_b200.Dockerfile","tag":"deepseek-v4-blackwell"}') + fi + if [ "$BUILD_B300" = "true" ]; then + entries+=('{"runner":"x64-docker-build-node","platform":"linux/amd64","dockerfile":"docker/deepseek_v4_b300.Dockerfile","tag":"deepseek-v4-b300"}') + fi + if [ "$BUILD_GRACE_BLACKWELL" = "true" ]; then + entries+=('{"runner":"arm-docker-build-node","platform":"linux/arm64","dockerfile":"docker/deepseek_v4_grace_blackwell.Dockerfile","tag":"deepseek-v4-grace-blackwell"}') + fi + if [ ${#entries[@]} -eq 0 ]; then + echo "::error::At least one build_* input must be true." + exit 1 + fi + joined=$(IFS=,; echo "${entries[*]}") + echo "include=[${joined}]" >> "$GITHUB_OUTPUT" + echo "Selected matrix: [${joined}]" + + build-deepseek-v4: + needs: build-matrix runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: - include: - - runner: x64-docker-build-node - platform: linux/amd64 - dockerfile: docker/deepseek_v4_h200.Dockerfile - tag: deepseek-v4-hopper - - runner: x64-docker-build-node - platform: linux/amd64 - dockerfile: docker/deepseek_v4_b200.Dockerfile - tag: deepseek-v4-blackwell - - runner: x64-docker-build-node - platform: linux/amd64 - dockerfile: docker/deepseek_v4_b300.Dockerfile - tag: deepseek-v4-b300 - - runner: arm-docker-build-node - platform: linux/arm64 - dockerfile: docker/deepseek_v4_grace_blackwell.Dockerfile - tag: deepseek-v4-grace-blackwell + include: ${{ fromJson(needs.build-matrix.outputs.include) }} steps: - name: Delete huge unnecessary tools folder run: rm -rf /opt/hostedtoolcache