chore: add prod_image to base configs, fix stale vllm-sagemaker-amzn2… #125
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto Release - SGLang EC2 | |
| on: | |
| # schedule run must be on the default branch | |
| schedule: | |
| # Runs at 9AM/10AM PST/PDT on Tuesdays and Thursdays | |
| - cron: '00 17 * * 2,4' | |
| # Trigger when an auto-update PR is merged | |
| push: | |
| branches: [main] | |
| # Manual trigger | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: false | |
| permissions: | |
| contents: read | |
| env: | |
| # CI environment configuration | |
| FORCE_COLOR: "1" | |
| # Config file path | |
| CONFIG_FILE: ".github/config/image/sglang-ec2.yml" | |
| jobs: | |
| # Gate: skip push events unless it's a merged auto-update PR for sglang | |
| autocurrency-pr-gate: | |
| if: >- | |
| github.event_name != 'push' || ( | |
| contains(github.event.head_commit.message, '[Auto-Update] sglang') && | |
| github.event.head_commit.author.name == 'aws-deep-learning-containers-ci[bot]' | |
| ) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - run: echo "Gate passed" | |
| load-config: | |
| needs: [autocurrency-pr-gate] | |
| runs-on: ubuntu-latest | |
| outputs: | |
| config: ${{ steps.load.outputs.config }} | |
| framework: ${{ steps.parse.outputs.framework }} | |
| framework-version: ${{ steps.parse.outputs.framework-version }} | |
| python-version: ${{ steps.parse.outputs.python-version }} | |
| cuda-version: ${{ steps.parse.outputs.cuda-version }} | |
| os-version: ${{ steps.parse.outputs.os-version }} | |
| container-type: ${{ steps.parse.outputs.container-type }} | |
| device-type: ${{ steps.parse.outputs.device-type }} | |
| arch-type: ${{ steps.parse.outputs.arch-type }} | |
| contributor: ${{ steps.parse.outputs.contributor }} | |
| customer-type: ${{ steps.parse.outputs.customer-type }} | |
| prod-image: ${{ steps.parse.outputs.prod-image }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Load configuration | |
| id: load | |
| uses: ./.github/actions/load-config | |
| with: | |
| config-file: ${{ env.CONFIG_FILE }} | |
| - name: Parse configuration | |
| id: parse | |
| run: | | |
| echo '${{ steps.load.outputs.config }}' > config.json | |
| echo "framework=$(jq -r '.common.framework' config.json)" >> $GITHUB_OUTPUT | |
| echo "framework-version=$(jq -r '.common.framework_version' config.json)" >> $GITHUB_OUTPUT | |
| echo "python-version=$(jq -r '.common.python_version' config.json)" >> $GITHUB_OUTPUT | |
| echo "cuda-version=$(jq -r '.common.cuda_version' config.json)" >> $GITHUB_OUTPUT | |
| echo "os-version=$(jq -r '.common.os_version' config.json)" >> $GITHUB_OUTPUT | |
| echo "container-type=$(jq -r '.common.job_type' config.json)" >> $GITHUB_OUTPUT | |
| echo "device-type=$(jq -r '.common.device_type // "gpu"' config.json)" >> $GITHUB_OUTPUT | |
| echo "arch-type=$(jq -r '.common.arch_type // "x86"' config.json)" >> $GITHUB_OUTPUT | |
| echo "contributor=$(jq -r '.common.contributor // "None"' config.json)" >> $GITHUB_OUTPUT | |
| echo "customer-type=$(jq -r '.common.customer_type // ""' config.json)" >> $GITHUB_OUTPUT | |
| echo "prod-image=$(jq -r '.common.prod_image' config.json)" >> $GITHUB_OUTPUT | |
| build-image: | |
| needs: [load-config] | |
| runs-on: | |
| - codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }} | |
| fleet:x86-build-runner | |
| buildspec-override:true | |
| outputs: | |
| ci-image: ${{ steps.build.outputs.image-uri }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Build image | |
| id: build | |
| uses: ./.github/actions/build-image | |
| with: | |
| framework: ${{ needs.load-config.outputs.framework }} | |
| target: sglang-ec2 | |
| base-image: lmsysorg/sglang:v${{ needs.load-config.outputs.framework-version }} | |
| framework-version: ${{ needs.load-config.outputs.framework-version }} | |
| container-type: ${{ needs.load-config.outputs.container-type }} | |
| aws-account-id: ${{ vars.CI_AWS_ACCOUNT_ID }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| tag-pr: ${{ needs.load-config.outputs.framework }}-${{ needs.load-config.outputs.framework-version }}-gpu-${{ needs.load-config.outputs.python-version }}-${{ needs.load-config.outputs.cuda-version }}-${{ needs.load-config.outputs.os-version }}-ec2-${{ github.run_id }} | |
| dockerfile-path: docker/${{ needs.load-config.outputs.framework }}/Dockerfile | |
| arch-type: ${{ needs.load-config.outputs.arch-type }} | |
| device-type: ${{ needs.load-config.outputs.device-type }} | |
| cuda-version: ${{ needs.load-config.outputs.cuda-version }} | |
| python-version: ${{ needs.load-config.outputs.python-version }} | |
| os-version: ${{ needs.load-config.outputs.os-version }} | |
| contributor: ${{ needs.load-config.outputs.contributor }} | |
| customer-type: ${{ needs.load-config.outputs.customer-type }} | |
| sanity-test: | |
| needs: [build-image, load-config] | |
| uses: ./.github/workflows/reusable-sanity-tests.yml | |
| with: | |
| image-uri: ${{ needs.build-image.outputs.ci-image }} | |
| aws-account-id: ${{ vars.CI_AWS_ACCOUNT_ID }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| framework: ${{ needs.load-config.outputs.framework }} | |
| framework-version: ${{ needs.load-config.outputs.framework-version }} | |
| python-version: ${{ needs.load-config.outputs.python-version }} | |
| cuda-version: ${{ needs.load-config.outputs.cuda-version }} | |
| os-version: ${{ needs.load-config.outputs.os-version }} | |
| customer-type: ${{ needs.load-config.outputs.customer-type }} | |
| arch-type: ${{ needs.load-config.outputs.arch-type }} | |
| device-type: ${{ needs.load-config.outputs.device-type }} | |
| contributor: ${{ needs.load-config.outputs.contributor }} | |
| container-type: ${{ needs.load-config.outputs.container-type }} | |
| telemetry-test: | |
| needs: [build-image, load-config] | |
| uses: ./.github/workflows/reusable-telemetry-tests.yml | |
| with: | |
| image-uri: ${{ needs.build-image.outputs.ci-image }} | |
| aws-account-id: ${{ vars.CI_AWS_ACCOUNT_ID }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| framework: ${{ needs.load-config.outputs.framework }} | |
| framework-version: ${{ needs.load-config.outputs.framework-version }} | |
| container-type: ${{ needs.load-config.outputs.container-type }} | |
| upstream-tests: | |
| needs: [build-image, load-config] | |
| uses: ./.github/workflows/reusable-sglang-upstream-tests.yml | |
| with: | |
| image-uri: ${{ needs.build-image.outputs.ci-image }} | |
| aws-account-id: ${{ vars.CI_AWS_ACCOUNT_ID }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| framework-version: ${{ needs.load-config.outputs.framework-version }} | |
| benchmark-start-command: >- | |
| docker run -d -it --rm --gpus=all | |
| -v ${HOME}/.cache/huggingface:/root/.cache/huggingface | |
| -v ${TEST_ARTIFACTS_DIRECTORY}/dataset:/dataset | |
| -p 30000:30000 | |
| -e HF_TOKEN=${HF_TOKEN} | |
| ${IMAGE} | |
| --model-path Qwen/Qwen3-0.6B | |
| --reasoning-parser qwen3 | |
| --host 127.0.0.1 | |
| --port 30000 | |
| secrets: inherit | |
| generate-release-spec: | |
| needs: [load-config, build-image, sanity-test, upstream-tests] | |
| runs-on: ubuntu-latest | |
| outputs: | |
| release-spec: ${{ steps.generate.outputs.release-spec }} | |
| should-release: ${{ steps.check-release.outputs.should-release }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Check if release is enabled | |
| id: check-release | |
| run: | | |
| echo '${{ needs.load-config.outputs.config }}' > config.json | |
| RELEASE_ENABLED=$(jq -r '.release.release // false' config.json) | |
| echo "Release enabled: ${RELEASE_ENABLED}" | |
| echo "should-release=${RELEASE_ENABLED}" >> $GITHUB_OUTPUT | |
| - name: Generate release spec | |
| id: generate | |
| if: steps.check-release.outputs.should-release == 'true' | |
| uses: ./.github/actions/generate-release-spec | |
| with: | |
| config-json: ${{ needs.load-config.outputs.config }} | |
| release-image: | |
| needs: [load-config, build-image, generate-release-spec] | |
| if: needs.generate-release-spec.outputs.should-release == 'true' | |
| uses: ./.github/workflows/reusable-release-image.yml | |
| with: | |
| source-image-uri: ${{ needs.build-image.outputs.ci-image }} | |
| release-spec: ${{ needs.generate-release-spec.outputs.release-spec }} | |
| environment: ${{ fromJson(needs.load-config.outputs.config).release.environment }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| runner-fleet: default-runner | |
| secrets: inherit |