33# SPDX-License-Identifier: Apache-2.0
44
55# Nightly CI pipeline that tests optional dependencies (PyTorch, numba-cuda)
6- # against the latest cuda-python wheels built on main, and runs the standard
7- # test suite on runners reserved for nightly-only use (e.g. arm64 l4×2).
6+ # against the latest cuda-python wheels built on main, runs the standard
7+ # test suite on runners reserved for nightly-only use (e.g. arm64 l4×2), and
8+ # exercises release-time CI helper scripts so they do not silently rot between releases.
89#
910# This workflow does NOT build wheels — it downloads them from the latest
1011# successful CI run on main and runs integration/standard tests.
3132 default : ' '
3233
3334jobs :
35+ test-ci-tools-for-release :
36+ name : " Nightly: CI tools for release"
37+ if : ${{ github.repository_owner == 'nvidia' }}
38+ runs-on : ubuntu-latest
39+ steps :
40+ - name : Checkout repository
41+ uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
42+ with :
43+ fetch-depth : 1
44+
45+ - name : Run CI tools unit tests
46+ run : |
47+ python -m pip install pytest
48+ python -m pytest -v ci/tools/tests
49+
3450 find-wheels :
3551 runs-on : ubuntu-latest
3652 outputs :
@@ -219,6 +235,7 @@ jobs:
219235 if : always()
220236 runs-on : ubuntu-latest
221237 needs :
238+ - test-ci-tools-for-release
222239 - find-wheels
223240 - test-pytorch-linux
224241 - test-pytorch-linux-aarch64
@@ -235,7 +252,9 @@ jobs:
235252 # See ci.yml for the full rationale on why we must use always()
236253 # and explicitly check each result rather than relying on the
237254 # default behaviour.
238- if ${{ needs.find-wheels.result != 'success' }}; then
255+ if ${{ needs.test-ci-tools-for-release.result == 'cancelled' ||
256+ needs.test-ci-tools-for-release.result == 'failure' ||
257+ needs.find-wheels.result != 'success' }}; then
239258 exit 1
240259 fi
241260 if ${{ needs.test-pytorch-linux.result == 'cancelled' ||
0 commit comments