Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .github/actions/build-image/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: 'Build Docker Image'
description: 'Build and push Docker images for different frameworks and targets'

inputs:
framework:
description: 'Framework name (vllm, sglang)'
required: true
target:
description: 'Docker build target'
required: true
base-image:
description: 'Base Docker image'
required: true
framework-version:
description: 'Framework version'
required: true
container-type:
description: 'Container type (e.g., general)'
required: true
aws-account-id:
description: 'AWS account ID for ECR'
required: true
aws-region:
description: 'AWS region'
required: true
tag:
description: 'Complete image tag (e.g., vllm-0.12.0-gpu-py312-cu129-ubuntu22.04-ec2-pr-123)'
required: true

outputs:
image-uri:
description: 'Built image URI'
value: ${{ steps.image-uri-build.outputs.CI_IMAGE_URI }}

runs:
using: 'composite'
steps:
- name: Setup buildkitd
shell: bash
run: .github/scripts/buildkitd.sh

- name: ECR login
uses: ./.github/actions/ecr-authenticate
with:
aws-account-id: ${{ inputs.aws-account-id }}
aws-region: ${{ inputs.aws-region }}

- name: Resolve image URI for build
id: image-uri-build
shell: bash
run: |
CI_IMAGE_URI=${{ inputs.aws-account-id }}.dkr.ecr.${{ inputs.aws-region }}.amazonaws.com/ci:${{ inputs.tag }}
echo "Image URI to build: ${CI_IMAGE_URI}"
echo "CI_IMAGE_URI=${CI_IMAGE_URI}" >> ${GITHUB_ENV}
echo "CI_IMAGE_URI=${CI_IMAGE_URI}" >> ${GITHUB_OUTPUT}

- name: Build image
shell: bash
run: |
docker buildx build --progress plain \
--build-arg CACHE_REFRESH="$(date +"%Y-%m-%d")" \
--build-arg BASE_IMAGE="${{ inputs.base-image }}" \
--build-arg CONTAINER_TYPE="${{ inputs.container-type }}" \
--build-arg FRAMEWORK="${{ inputs.framework }}" \
--build-arg FRAMEWORK_VERSION="${{ inputs.framework-version }}" \
--cache-to=type=inline \
--cache-from=type=registry,ref=${CI_IMAGE_URI} \
--tag ${CI_IMAGE_URI} \
--target ${{ inputs.target }} \
-f docker/${{ inputs.framework }}/Dockerfile .

- name: Container push
shell: bash
run: |
docker push ${CI_IMAGE_URI}
docker rmi ${CI_IMAGE_URI}
46 changes: 12 additions & 34 deletions .github/workflows/pr-sglang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,44 +93,22 @@ jobs:
group: ${{ github.workflow }}-build-sglang-image-${{ github.event.pull_request.number }}
cancel-in-progress: true
outputs:
ci-image: ${{ steps.image-uri-build.outputs.CI_IMAGE_URI }}
ci-image: ${{ steps.build.outputs.image-uri }}
steps:
- uses: actions/checkout@v5
- run: .github/scripts/buildkitd.sh

- name: ECR login
uses: ./.github/actions/ecr-authenticate
- name: Build image
id: build
uses: ./.github/actions/build-image
with:
framework: ${{ env.FRAMEWORK }}
target: sglang-sagemaker
base-image: lmsysorg/sglang:v${{ env.SGLANG_VERSION }}-${{ env.CUDA_VERSION }}-amd64
framework-version: ${{ env.SGLANG_VERSION }}
container-type: ${{ env.CONTAINER_TYPE }}
aws-account-id: ${{ vars.CI_AWS_ACCOUNT_ID }}
aws-region: ${{ vars.AWS_REGION }}

- name: Resolve image URI for build
id: image-uri-build
run: |
CI_IMAGE_URI=${{ vars.CI_AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/ci:sglang-${{ env.SGLANG_VERSION }}-gpu-${{ env.PYTHON_VERSION }}-${{ env.CUDA_VERSION }}-${{ env.OS_VERSION }}-sagemaker-pr-${{ github.event.pull_request.number }}
echo "Image URI to build: ${CI_IMAGE_URI}"
echo "CI_IMAGE_URI=${CI_IMAGE_URI}" >> ${GITHUB_ENV}
echo "CI_IMAGE_URI=${CI_IMAGE_URI}" >> ${GITHUB_OUTPUT}

- name: Build image
run: |
# base image: https://hub.docker.com/r/lmsysorg/sglang/tags
docker buildx build --progress plain \
--build-arg CACHE_REFRESH="$(date +"%Y-%m-%d")" \
--build-arg BASE_IMAGE="lmsysorg/sglang:v${{ env.SGLANG_VERSION }}-${{ env.CUDA_VERSION }}-amd64" \
--build-arg CONTAINER_TYPE="${{ env.CONTAINER_TYPE }}" \
--build-arg FRAMEWORK="${{ env.FRAMEWORK }}" \
--build-arg FRAMEWORK_VERSION="${{ env.SGLANG_VERSION }}" \
--cache-to=type=inline \
--cache-from=type=registry,ref=${CI_IMAGE_URI} \
--tag ${CI_IMAGE_URI} \
--target sglang-sagemaker \
-f docker/sglang/Dockerfile .

- name: Container push
run: |
docker push ${CI_IMAGE_URI}
docker rmi ${CI_IMAGE_URI}
tag: ${{ env.FRAMEWORK }}-${{ env.SGLANG_VERSION }}-gpu-${{ env.PYTHON_VERSION }}-${{ env.CUDA_VERSION }}-${{ env.OS_VERSION }}-sagemaker-pr-${{ github.event.pull_request.number }}

set-test-environment:
needs: [check-changes, build-sglang-image]
Expand Down Expand Up @@ -164,7 +142,7 @@ jobs:
echo "IMAGE_URI=${IMAGE_URI}" >> ${GITHUB_OUTPUT}

sglang-local-benchmark-test:
needs: [set-test-environment, build-sglang-image]
needs: [set-test-environment]
if: success()
runs-on:
- codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }}
Expand Down Expand Up @@ -222,7 +200,7 @@ jobs:
--dataset-path /dataset/ShareGPT_V3_unfiltered_cleaned_split.json

sglang-frontend-test:
needs: [build-sglang-image, set-test-environment]
needs: [set-test-environment]
if: success()
runs-on:
- codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }}
Expand Down
Loading