| name: Release Docker Xeon Images |
| 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: ubuntu-24.04 |
| environment: 'prod' |
| strategy: |
| matrix: |
| 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 }} |
| tag=v${version}-xeon |
| |
| docker build . -f docker/xeon.Dockerfile \ |
| --build-arg VER_SGLANG=v${version} \ |
| -t lmsysorg/sglang:${tag} \ |
| --no-cache |
| docker push lmsysorg/sglang:${tag} |
|
|