Add nightly build workflow for ROCgdb master branch - #120
Conversation
|
Blocked on: |
939e4d6 to
81b8002
Compare
81b8002 to
2348c39
Compare
17d71a9 to
8221158
Compare
spatrang
left a comment
There was a problem hiding this comment.
Review summary
Nightly CI for master against current TheRock pins is the right idea, and the workflow shape (resolve → reusable build → GPU/CPU/corefile → summary) matches PR CI. A few issues should be fixed before merge; one looks like a hard configure failure on master.
PR CI on this branch is green, but that only exercises therock-ci.yml with rocgdb_ref unset. nightly-build.yml is schedule/dispatch only and has not been run.
Blocker
- Missing
-DTHEROCK_ROCGDB_DOWNLOAD_CI_SCRIPT=ON.THEROCK_ROCGDB_UPSTREAM_BUILDdoes not fetchtest_rocgdb.py.masterhas no.github/tree, so configure willFATAL_ERRORwithTHEROCK_BUILD_TESTING=ON.
High
- Dispatch this workflow from the PR branch after the CMake fix and confirm it actually checks out
master. rocgdb_ignore_list.jsonis also missing onmaster(TheRock only warns and skips it). Decide whether to fetch/install it or accept raw xfails on nightly.
Medium
- Build still uses pre-#300
gfx94X-dcgpuwhile PR CI builds multi-arch. - No
build_runs_on/select_runner.py(falls back toaws-linux-scale-rocm-prod). - Checkout fallback should be
github.sha, notgithub.ref. - No concurrency group.
Low
- Extra CMake flags will drift from
therock-ci.yml; a “keep in sync except …” comment would help. - Tests should take
therock_reffrom the build job output. - AWS configure
ifis PR-shaped (!github.event.pull_request.head.repo.fork). Emptypull_requestonscheduleshould still be truthy for!fork, but confirm artifact push on the first dispatch. - Echo
rocgdb_refin the build log so it is obvious which branch was built. - The May 19 “blocked on #130” comment is stale (#300 landed); please resolve that thread.
Merge bar
- Add
-DTHEROCK_ROCGDB_DOWNLOAD_CI_SCRIPT=ON. - Decide ignore-list behavior for
master. workflow_dispatchnightly from this branch; confirm configure,mastercheckout, artifact push, and GPU/CPU/corefile.- Confirm or document
gfx94X-dcgpuvs multi-arch, and whetherbuild_runs_onshould match PR CI.
Adds a scheduled nightly build that tests ROCgdb master against the current TheRock dependency pins, with GPU, CPU, and corefile test coverage. Changes: - Add nightly-build.yml: scheduled (2:07 AM UTC) and manually dispatchable workflow that builds ROCgdb master via TheRock and runs the full test suite (GPU on gfx94X, CPU on gfx94X, corefile on gfx942) - Mirror PR CI build topology (dcgpu-all;dgpu-all;igpu-all, multiarch bundle name, select_runner.py for runner selection) - Add concurrency group to prevent overlapping runs - Add rocgdb_ref input to therock-ci-linux.yml to allow nightly builds to check out a specific ROCgdb branch or ref; fallback preserves PR CI's pinned-SHA checkout semantics
8221158 to
ac903dc
Compare
Temporary commit to allow manual dispatch of the nightly workflow from this branch via the GitHub Actions UI. Drop before merging.
131321d to
012946e
Compare
|
therock-ci.yml temporarily overwritten for validation purposes. If this looks OK, we'll drop the second commit. |
spatrang
left a comment
There was a problem hiding this comment.
Round 2 review
Round-1 workflow comments are addressed in ac903dcd (CMake flags, multi-arch, runner selection, concurrency, github.sha, therock_ref from the build). A dispatch of the nightly path (run 33095027788) built master successfully — so the previous configure blocker is gone.
That run also showed the nightly as designed will be red every night unless a few test-policy gaps are fixed. The WIP commit is still on HEAD and must not land.
Round-1 follow-up
| Item | Status |
|---|---|
THEROCK_ROCGDB_DOWNLOAD_CI_SCRIPT=ON |
Fixed and validated (build succeeded, test_rocgdb.py ran from artifacts) |
Multi-arch + select_runner.py |
Fixed |
| Concurrency | Fixed |
Checkout fallback github.sha |
Fixed |
therock_ref from build output |
Fixed (run output matched the pin) |
| Ignore list | Not fixed; now evidenced — CPU is red only on known amd-staging xfails |
Blocker
- Drop
012946ee(WIP: overwrite therock-ci.yml…) before merge. It replaces PR CI with the nightly workflow and removes thepull_requesttrigger (this push only ran pre-commit). Keep the usefulShow rocGDB refstep from that commit intherock-ci-linux.yml.
High
- CPU will fail every night without
rocgdb_ignore_list.json. The 6 unexpected failures are exactly the amd-staging LLVM xfail list. Fetch/install that file with the CI script. - Corefile will fail every night on
master: thosegdb.rocm/corefile*.expfiles exist only onamd-staging. Dispatch error:Missing or invalid test file: gdb.rocm/corefile.exp. Skiptest-corefilefor master (or only invoke tests that exist in the tree). - GPU had a real 1-test fail (
gdb.rocm/displaced-stepping.exp). That is useful nightly signal; it is not on the ignore list. Fine to leave failing, or xfail it explicitly.
Merge bar
- Drop the WIP commit; restore
therock-ci.yml; keepShow rocGDB ref. - Install the ignore list (CPU) and stop running missing corefile tests on master.
- Re-dispatch (or wait for a PR CI run of the restored workflow) and confirm: build of
mastergreen, CPU green with xfails, corefile skipped or green, GPU = the displaced-stepping result you want.
| @@ -1,63 +1,31 @@ | |||
| name: TheRock CI for rocgdb | |||
| name: Nightly ROCgdb Build | |||
There was a problem hiding this comment.
Blocker (merge): this file must not ship as the nightly workflow. 012946ee (WIP: overwrite therock-ci.yml with nightly for dispatch testing) replaces PR CI and drops on.pull_request, which is why the latest push only ran pre-commit.
Dispatching via this workaround was reasonable (nightly-build.yml is new and not on the default branch, so it does not show in the Actions UI). Please drop this commit before merge and restore therock-ci.yml.
When dropping it, keep the Show rocGDB ref step that this WIP also added in therock-ci-linux.yml (that step is not in ac903dcd).
| test-corefile: | ||
| name: Test corefile (gfx942) | ||
| needs: [nightly-rocgdb-build-linux] | ||
| if: ${{ needs.nightly-rocgdb-build-linux.result == 'success' }} | ||
| permissions: | ||
| contents: read | ||
| uses: ./.github/workflows/therock-test-packages.yml | ||
| with: | ||
| amdgpu_families: gfx942 | ||
| artifact_group: nightly-rocgdb-multiarch | ||
| therock_ref: ${{ needs.nightly-rocgdb-build-linux.outputs.therock_ref }} | ||
| artifact_run_id: ${{ github.run_id }} | ||
| projects_to_test: rocgdb-corefile |
There was a problem hiding this comment.
High: this job cannot succeed against default master. Those tests are not in upstream/master gdb/testsuite/gdb.rocm/ (they exist on amd-staging only). Dispatch run 33095027788 failed immediately with:
Error: Missing or invalid test file: gdb.rocm/corefile.exp
TheRock’s rocgdb-corefile entry always passes that file list into test_rocgdb.py, which treats a missing .exp as a hard error.
Please skip test-corefile when rocgdb_ref is master (or a ref that lacks those files), or teach the runner to skip missing tests. As written, corefile will fail every nightly.
| test-cpu: | ||
| name: Test CPU | ||
| needs: [nightly-rocgdb-build-linux] | ||
| if: ${{ needs.nightly-rocgdb-build-linux.result == 'success' }} | ||
| permissions: | ||
| contents: read | ||
| uses: ./.github/workflows/therock-test-packages.yml | ||
| with: | ||
| # CPU tests are gfx-independent; gfx94X selects the artifact set to fetch. | ||
| amdgpu_families: gfx94X | ||
| artifact_group: nightly-rocgdb-multiarch | ||
| therock_ref: ${{ needs.nightly-rocgdb-build-linux.outputs.therock_ref }} | ||
| artifact_run_id: ${{ github.run_id }} | ||
| projects_to_test: rocgdb-cpu |
There was a problem hiding this comment.
High: dispatch CPU failed only on ignore-listed gdb.dwarf2 tests (6 unexpected failures; 3067/2717 PASSes otherwise). Log:
Ignore list file not found: .../build/tests/rocgdb/rocgdb_ignore_list.json
THEROCK_ROCGDB_DOWNLOAD_CI_SCRIPT fetches test_rocgdb.py from amd-staging, not rocgdb_ignore_list.json. Without that file, this job stays red every night and the workflow is not a smoke signal.
Please install the ignore list into tests/rocgdb as well (TheRock wrapper change, or a small extra fetch in this workflow).
Adds a scheduled nightly build that tests ROCgdb master against the current TheRock dependency pins, with full GPU, CPU, and corefile test coverage.
Changes:
PR-based CI is unchanged.