113 lines
3.4 KiB
YAML
113 lines
3.4 KiB
YAML
name: Build PR Development Docker Images
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
pr_number:
|
|
description: 'PR number to build from (works with both internal and fork PRs)'
|
|
required: true
|
|
type: string
|
|
|
|
concurrency:
|
|
group: release-docker-dev-pr-${{ github.event.inputs.pr_number }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-dev:
|
|
if: ${{ github.repository == 'sgl-project/sglang' }}
|
|
environment: "prod"
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- runner: x64-docker-build-node
|
|
platform: linux/amd64
|
|
build_type: all
|
|
grace_blackwell: 0
|
|
arch_tag: x86
|
|
version: 12.9.1
|
|
- runner: arm-docker-build-node
|
|
platform: linux/arm64
|
|
build_type: all
|
|
grace_blackwell: 1
|
|
arch_tag: arm64
|
|
version: 12.9.1
|
|
steps:
|
|
- name: Delete huge unnecessary tools folder
|
|
run: rm -rf /opt/hostedtoolcache
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/pull/${{ inputs.pr_number }}/head
|
|
|
|
- name: Free disk space
|
|
uses: jlumbroso/free-disk-space@main
|
|
with:
|
|
tool-cache: true
|
|
docker-images: true
|
|
android: true
|
|
dotnet: true
|
|
haskell: true
|
|
large-packages: true
|
|
swap-storage: true
|
|
|
|
- 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: Build and Push Dev Image
|
|
run: |
|
|
tag=dev-${{ matrix.arch_tag }}-pr-${{ inputs.pr_number }}
|
|
|
|
docker buildx build \
|
|
--platform ${{ matrix.platform }} \
|
|
--push \
|
|
-f docker/Dockerfile \
|
|
--target framework \
|
|
--build-arg CUDA_VERSION=${{ matrix.version }} \
|
|
--build-arg BUILD_TYPE=${{ matrix.build_type }} \
|
|
--build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
|
|
--build-arg GRACE_BLACKWELL=${{ matrix.grace_blackwell }} \
|
|
--build-arg BRANCH_TYPE=local \
|
|
--build-arg INSTALL_FLASHINFER_JIT_CACHE=1 \
|
|
-t lmsysorg/sglang:${tag} \
|
|
--no-cache \
|
|
.
|
|
|
|
create-manifests:
|
|
runs-on: ubuntu-22.04
|
|
needs: [build-dev]
|
|
if: ${{ github.repository == 'sgl-project/sglang' }}
|
|
environment: "prod"
|
|
steps:
|
|
- 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: Create multi-arch manifest
|
|
run: |
|
|
# Create PR dev manifest
|
|
docker buildx imagetools create \
|
|
-t lmsysorg/sglang:dev-pr-${{ inputs.pr_number }} \
|
|
lmsysorg/sglang:dev-x86-pr-${{ inputs.pr_number }} \
|
|
lmsysorg/sglang:dev-arm64-pr-${{ inputs.pr_number }}
|
|
|
|
echo "✓ Built Docker image: lmsysorg/sglang:dev-pr-${{ inputs.pr_number }}"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " docker pull lmsysorg/sglang:dev-pr-${{ inputs.pr_number }}"
|