diff --git a/.github/workflows/gpu_ci_h100.yaml b/.github/workflows/gpu_ci_h100.yaml index b70d6c084d..2068b8c54e 100644 --- a/.github/workflows/gpu_ci_h100.yaml +++ b/.github/workflows/gpu_ci_h100.yaml @@ -25,6 +25,15 @@ permissions: jobs: skyrl_train_tests_h100: + # A `labeled` event starts a run of every label-gated workflow, so runs fired by + # another label skip this job. GitHub keeps only the newest check of a given name, + # so a skip published under the real name masks a run that is still going. The + # running branch has to stay equal to the job id -- that is the existing check + # context, and renaming it would break branch protection pointing at it. + name: >- + ${{ (github.event_name != 'pull_request_target' + || github.event.label.name == 'run_h100_gpu_ci') + && 'skyrl_train_tests_h100' || 'skipped (unrelated label)' }} # Gate on the label that fired this event. `types: [labeled]` delivers one event # per label added, and `contains(...labels.*.name, ...)` tests the whole label # set, so labelling in bulk launched one identical GPU run per label. diff --git a/.github/workflows/gpu_skyrl_train.yaml b/.github/workflows/gpu_skyrl_train.yaml index 68c4c49607..2f1429c4f1 100644 --- a/.github/workflows/gpu_skyrl_train.yaml +++ b/.github/workflows/gpu_skyrl_train.yaml @@ -25,6 +25,15 @@ permissions: jobs: skyrl_train_tests: + # A `labeled` event starts a run of every label-gated workflow, so runs fired by + # another label skip this job. GitHub keeps only the newest check of a given name, + # so a skip published under the real name masks a run that is still going. The + # running branch has to stay equal to the job id -- that is the existing check + # context, and renaming it would break branch protection pointing at it. + name: >- + ${{ (github.event_name != 'pull_request_target' + || github.event.label.name == 'run_train_gpu_ci') + && 'skyrl_train_tests' || 'skipped (unrelated label)' }} # Gate on the label that fired this event. `types: [labeled]` delivers one event # per label added, and `contains(...labels.*.name, ...)` tests the whole label # set, so labelling in bulk launched one identical GPU run per label. diff --git a/.github/workflows/gpu_skyrl_train_megatron.yaml b/.github/workflows/gpu_skyrl_train_megatron.yaml index 65567913f3..3b200dea4c 100644 --- a/.github/workflows/gpu_skyrl_train_megatron.yaml +++ b/.github/workflows/gpu_skyrl_train_megatron.yaml @@ -27,6 +27,15 @@ permissions: jobs: skyrl_train_tests_megatron: + # A `labeled` event starts a run of every label-gated workflow, so runs fired by + # another label skip this job. GitHub keeps only the newest check of a given name, + # so a skip published under the real name masks a run that is still going. The + # running branch has to stay equal to the job id -- that is the existing check + # context, and renaming it would break branch protection pointing at it. + name: >- + ${{ (github.event_name != 'pull_request_target' + || github.event.label.name == 'run_train_megatron_gpu_ci') + && 'skyrl_train_tests_megatron' || 'skipped (unrelated label)' }} # Gate on the label that fired this event. `types: [labeled]` delivers one event # per label added, and `contains(...labels.*.name, ...)` tests the whole label # set, so labelling in bulk launched one identical GPU run per label. diff --git a/.github/workflows/gpu_skyrl_train_megatron_models.yaml b/.github/workflows/gpu_skyrl_train_megatron_models.yaml index 06b528d10f..1d91f2065a 100644 --- a/.github/workflows/gpu_skyrl_train_megatron_models.yaml +++ b/.github/workflows/gpu_skyrl_train_megatron_models.yaml @@ -27,6 +27,15 @@ permissions: jobs: skyrl_train_tests_megatron_models: + # A `labeled` event starts a run of every label-gated workflow, so runs fired by + # another label skip this job. GitHub keeps only the newest check of a given name, + # so a skip published under the real name masks a run that is still going. The + # running branch has to stay equal to the job id -- that is the existing check + # context, and renaming it would break branch protection pointing at it. + name: >- + ${{ (github.event_name != 'pull_request_target' + || github.event.label.name == 'run_train_megatron_gpu_ci_models') + && 'skyrl_train_tests_megatron_models' || 'skipped (unrelated label)' }} # Gate on the label that fired this event. `types: [labeled]` delivers one event # per label added, and `contains(...labels.*.name, ...)` tests the whole label # set, so labelling in bulk launched one identical GPU run per label. diff --git a/.github/workflows/tinker_skyrl_train_backend_gpu.yaml b/.github/workflows/tinker_skyrl_train_backend_gpu.yaml index e2d56fefed..f1d109c96e 100644 --- a/.github/workflows/tinker_skyrl_train_backend_gpu.yaml +++ b/.github/workflows/tinker_skyrl_train_backend_gpu.yaml @@ -28,6 +28,15 @@ permissions: jobs: tinker_skyrl_train_backend_gpu_tests: + # A `labeled` event starts a run of every label-gated workflow, so runs fired by + # another label skip this job. GitHub keeps only the newest check of a given name, + # so a skip published under the real name masks a run that is still going. The + # running branch has to stay equal to the job id -- that is the existing check + # context, and renaming it would break branch protection pointing at it. + name: >- + ${{ (github.event_name != 'pull_request_target' + || github.event.label.name == 'run_tinker_skyrl_train_backend_gpu_ci') + && 'tinker_skyrl_train_backend_gpu_tests' || 'skipped (unrelated label)' }} # Gate on the label that fired this event. `types: [labeled]` delivers one event # per label added, and `contains(...labels.*.name, ...)` tests the whole label # set, so labelling in bulk launched one identical GPU run per label.