| name: Release Docker Images (AMD) |
| on: |
| push: |
| tags: |
| - 'v[0-9]+.*' |
| workflow_dispatch: |
| inputs: |
| version: |
| description: 'Version to build (without v prefix, e.g., 0.5.7)' |
| required: true |
|
|
| jobs: |
| publish: |
| if: github.repository == 'sgl-project/sglang' |
| runs-on: amd-docker-scale |
| environment: 'prod' |
| strategy: |
| matrix: |
| rocm_version: ['rocm700', 'rocm720'] |
| gpu_arch: ['gfx942', 'gfx950'] |
| build_type: ['all'] |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v4 |
|
|
| - name: Login to Docker Hub |
| uses: docker/login-action@v2 |
| with: |
| username: ${{ secrets.DOCKERHUB_USERNAME }} |
| password: ${{ secrets.DOCKERHUB_TOKEN }} |
|
|
| - name: Get version from tag |
| id: version |
| run: | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then |
| VERSION="${{ github.event.inputs.version }}" |
| else |
| # Extract version from tag (e.g., v0.5.7 -> 0.5.7) |
| VERSION="${GITHUB_REF_NAME#v}" |
| fi |
| |
| |
| 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 |
| run: | |
| version=${{ steps.version.outputs.version }} |
| echo "Version: ${version}" |
| |
| gpu_arch_suffix="" |
| if [ "${{ matrix.rocm_version }}" = "rocm700" ]; then |
| if [ "${{ matrix.gpu_arch }}" = "gfx942" ]; then |
| rocm_tag="rocm700-mi30x" |
| elif [ "${{ matrix.gpu_arch }}" = "gfx950" ]; then |
| rocm_tag="rocm700-mi35x" |
| else |
| echo "Unsupported gfx arch" |
| exit 1 |
| fi |
| elif [ "${{ matrix.rocm_version }}" = "rocm720" ]; then |
| gpu_arch_suffix="-${{ matrix.rocm_version }}" |
| if [ "${{ matrix.gpu_arch }}" = "gfx942" ]; then |
| rocm_tag="rocm720-mi30x" |
| elif [ "${{ matrix.gpu_arch }}" = "gfx950" ]; then |
| rocm_tag="rocm720-mi35x" |
| else |
| echo "Unsupported gfx arch" |
| exit 1 |
| fi |
| else |
| echo "Unsupported rocm version" |
| exit 1 |
| fi |
|
|
| tag=v${version}-${rocm_tag} |
|
|
| |
| docker build . -f docker/rocm.Dockerfile --build-arg BUILD_TYPE=${{ matrix.build_type }} --build-arg GPU_ARCH=${{ matrix.gpu_arch }}${gpu_arch_suffix} --build-arg SGL_BRANCH=v${version} --build-arg ENABLE_MORI=1 --build-arg NIC_BACKEND=ainic -t lmsysorg/sglang:${tag} --no-cache |
| docker push lmsysorg/sglang:${tag} |
|
|