# Weekly CUDA tests. Same shape as nightly-test-nvidia.yml (see its header); a # test joins by declaring `stage="weekly"` plus a runner_config. name: Weekly Test (Nvidia) on: schedule: - cron: '0 0 * * 0' # Run every Sunday at midnight UTC workflow_dispatch: inputs: runner_filter: # A free-text field rather than a choice: `on:` blocks take no # expressions, so an options list would be a second copy of the matrix # below to keep in sync. Matched in _pr-test-stage.yml. description: 'runner_config to run alone (empty or "all" runs every one)' required: false type: string default: 'all' full_parallel: description: 'Run all shards of a job at once (faster, but competes with per-commit CI for machines). Off by default: one shard at a time.' required: false type: boolean default: false concurrency: group: weekly-test-nvidia-${{ github.ref }} cancel-in-progress: true permissions: actions: write contents: read issues: read pull-requests: read jobs: # run_all_tests skips the paths-filter, so main_package is 'true' and # sgl_kernel stays empty: every test runs, and no job waits on a wheel this # workflow never builds. check-changes: uses: ./.github/workflows/_pr-test-check-changes.yml with: pr_test_yml: '.github/workflows/weekly-test-nvidia.yml' run_all_tests: true force_continue_on_error: true secrets: inherit # One row per machine type; timeouts mirror the same runner's nightly job. # Adding a machine is one row here, and adding a test to an existing machine # is none -- `stage="weekly"` + `runner_config=` on the test is enough. weekly-test: # Without this, the matrix default names the job after every value in the # row -- "weekly-test (1-gpu-large, 120, 180)". name: weekly-test-${{ matrix.runner_config }} needs: check-changes if: github.repository == 'sgl-project/sglang' strategy: fail-fast: false matrix: include: - { runner_config: 1-gpu-large, run_timeout: '120', job_timeout: '180' } - { runner_config: 2-gpu-large, run_timeout: '240', job_timeout: '300' } - { runner_config: 4-gpu-h100, run_timeout: '120', job_timeout: '180' } - { runner_config: 4-gpu-b200, run_timeout: '150', job_timeout: '210' } - { runner_config: 8-gpu-h200, run_timeout: '240', job_timeout: '300' } - { runner_config: 8-gpu-b200, run_timeout: '360', job_timeout: '420' } uses: ./.github/workflows/_pr-test-stage.yml with: self_name: weekly-test-${{ matrix.runner_config }} runner_config: ${{ matrix.runner_config }} check_changes: ${{ toJson(needs.check-changes.outputs) }} caller_inputs: ${{ toJson(inputs) }} partitions: ${{ needs.check-changes.outputs.partitions }} run_timeout_minutes: ${{ matrix.run_timeout }} job_timeout_minutes: ${{ matrix.job_timeout }} scheduled: true secrets: inherit