Skip to content

Commit 70c8195

Browse files
authored
Adopt workflow dispatch pattern for compute sanitizer workflows (rapidsai#22054)
Adopt the dispatch pattern from [rapidsai/workflows](https://github.com/rapidsai/workflows/blob/main/.github/workflows/nightly-pipeline-trigger.yaml) so that the compute sanitizer workflows make sense in the Actions UI. - **Trigger workflow** (`compute-sanitizer-trigger.yaml`): Renamed to "Trigger Compute Sanitizer". Uses `gh workflow run` instead of `workflow_call` to dispatch the run workflow. This is now a lightweight scheduler. - **Run workflow** (`compute-sanitizer-run.yaml`): Renamed to "Compute Sanitizer" with a `run-name` of "Compute Sanitizer {tool}". Absorbs test discovery (when `test_names` is not provided). Drops `workflow_call` trigger. Previously, the actual GPU job runs appeared under "Compute Sanitizer Trigger" (because `workflow_call` nests runs under the caller), while "Compute Sanitizer Run" only showed manual dispatches. This was confusing and backwards. Now, the heavy runs appear under "Compute Sanitizer" with descriptive names, and the lightweight scheduler appears under "Trigger Compute Sanitizer". Authors: - David Wendt (https://github.com/davidwendt) - Bradley Dice (https://github.com/bdice) Approvers: - Bradley Dice (https://github.com/bdice) URL: rapidsai#22054
1 parent c8cc00e commit 70c8195

2 files changed

Lines changed: 43 additions & 42 deletions

File tree

.github/workflows/compute-sanitizer-run.yaml

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
1-
name: Compute Sanitizer Run
1+
name: Compute Sanitizer
2+
run-name: "Compute Sanitizer ${{ inputs.tool_name }}"
23

34
on:
4-
workflow_call:
5-
inputs:
6-
tool_name:
7-
required: true
8-
type: string
9-
description: "Compute sanitizer tool to run (memcheck, racecheck, initcheck, synccheck)"
10-
test_names:
11-
required: true
12-
type: string
13-
description: "JSON array of test names to run"
145
workflow_dispatch:
156
inputs:
167
tool_name:
@@ -23,13 +14,31 @@ on:
2314
- initcheck
2415
- synccheck
2516
test_names:
26-
required: true
17+
required: false
2718
type: string
28-
description: "JSON array of test names to run"
19+
description: "JSON array of test names to run (discovers all tests if empty)"
20+
default: ""
2921

3022
jobs:
23+
discover-sanitizer-tests:
24+
if: ${{ inputs.test_names == '' }}
25+
runs-on: linux-amd64-cpu4
26+
container:
27+
image: rapidsai/ci-conda:26.06-latest
28+
outputs:
29+
tests: ${{ steps.find-tests.outputs.tests }}
30+
steps:
31+
- name: Checkout code
32+
uses: actions/checkout@v5
33+
- name: Discover test executables
34+
id: find-tests
35+
shell: bash
36+
run: |
37+
./ci/discover_libcudf_tests.sh
3138
run-sanitizer-tests:
3239
name: Run ${{ inputs.tool_name }} on ${{ matrix.test_name }}
40+
needs: discover-sanitizer-tests
41+
if: ${{ !cancelled() }}
3342
runs-on: linux-amd64-gpu-l4-latest-1
3443
container:
3544
image: rapidsai/ci-conda:26.06-latest
@@ -38,7 +47,7 @@ jobs:
3847
strategy:
3948
fail-fast: false
4049
matrix:
41-
test_name: ${{ fromJson(inputs.test_names) }}
50+
test_name: ${{ fromJson(inputs.test_names || needs.discover-sanitizer-tests.outputs.tests) }}
4251
steps:
4352
- name: Checkout code
4453
uses: actions/checkout@v5
Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
name: Compute Sanitizer Trigger
1+
name: Trigger Compute Sanitizer
22

3-
# This workflow runs all compute-sanitizer tools on all libcudf tests weekly.
3+
# This workflow triggers compute-sanitizer runs for all libcudf tests weekly.
44
# WARNING: This is very resource intensive and runs hundreds of GPU jobs.
55
# For targeted testing, manually trigger compute-sanitizer-run.yaml with specific tool_name and test_names.
66

@@ -10,31 +10,23 @@ on:
1010
workflow_dispatch:
1111

1212
jobs:
13-
discover-sanitizer-tests:
14-
runs-on: linux-amd64-cpu4
15-
container:
16-
image: rapidsai/ci-conda:26.06-latest
17-
outputs:
18-
tests: ${{ steps.find-tests.outputs.tests }}
13+
trigger-racecheck:
14+
runs-on: ubuntu-latest
1915
steps:
20-
- name: Checkout code
21-
uses: actions/checkout@v5
22-
- name: Discover test executables
23-
id: find-tests
24-
shell: bash
16+
- uses: actions/checkout@v5
17+
- name: Trigger racecheck
18+
env:
19+
GH_TOKEN: ${{ github.token }}
2520
run: |
26-
./ci/discover_libcudf_tests.sh
27-
run-sanitizer-tests-racecheck:
28-
name: compute-sanitizer racecheck tests
29-
needs: discover-sanitizer-tests
30-
uses: ./.github/workflows/compute-sanitizer-run.yaml
31-
with:
32-
tool_name: "racecheck"
33-
test_names: ${{ needs.discover-sanitizer-tests.outputs.tests }}
34-
run-sanitizer-tests-synccheck:
35-
name: compute-sanitizer synccheck tests
36-
needs: discover-sanitizer-tests
37-
uses: ./.github/workflows/compute-sanitizer-run.yaml
38-
with:
39-
tool_name: "synccheck"
40-
test_names: ${{ needs.discover-sanitizer-tests.outputs.tests }}
21+
gh workflow run compute-sanitizer-run.yaml \
22+
-f tool_name="racecheck"
23+
trigger-synccheck:
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v5
27+
- name: Trigger synccheck
28+
env:
29+
GH_TOKEN: ${{ github.token }}
30+
run: |
31+
gh workflow run compute-sanitizer-run.yaml \
32+
-f tool_name="synccheck"

0 commit comments

Comments
 (0)