Skip to content

Commit 677bde7

Browse files
authored
[no-ci] ci: use same-run CUDA 12 bindings for Core and metapackages (#3318)
* ci: use same-run CUDA 12 bindings for Core and metapackages Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com> * Address migration review: simplify configuration and tooling Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com> * Fix tagged metapackage builds and preserve toolkit patch coverage Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com> * Use retained CUDA 12 milestone for source distributions Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com> --------- Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
1 parent 0ce9436 commit 677bde7

14 files changed

Lines changed: 333 additions & 224 deletions

File tree

‎.github/workflows/build-wheel.yml‎

Lines changed: 70 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ jobs:
4646
BUILD_PYTHON: ${{ inputs.workplan == '' || fromJSON(inputs.workplan).modules.python.needs_build }}
4747
TEST_BINDINGS: ${{ inputs.workplan == '' || fromJSON(inputs.workplan).modules.bindings.needs_test }}
4848
TEST_CORE: ${{ inputs.workplan == '' || fromJSON(inputs.workplan).modules.core.needs_test }}
49+
TEST_PYTHON: ${{ inputs.workplan == '' || fromJSON(inputs.workplan).modules.python.needs_test }}
50+
BUILD_MAINTENANCE_BINDINGS: >-
51+
${{ !inputs.single-cuda-major &&
52+
(inputs.workplan == '' ||
53+
fromJSON(inputs.workplan).modules.bindings.needs_build ||
54+
fromJSON(inputs.workplan).modules.bindings.needs_test ||
55+
fromJSON(inputs.workplan).modules.core.needs_build ||
56+
fromJSON(inputs.workplan).modules.core.needs_test ||
57+
fromJSON(inputs.workplan).modules.python.needs_build ||
58+
fromJSON(inputs.workplan).modules.python.needs_test) }}
4959
BASELINE_RUN_ID: ${{ inputs.workplan != '' && fromJSON(inputs.workplan).baseline.run_id || '' }}
5060
BASELINE_SHA: ${{ inputs.workplan != '' && fromJSON(inputs.workplan).baseline.sha || '' }}
5161
strategy:
@@ -88,14 +98,14 @@ jobs:
8898
run: echo "::add-matcher::.github/matchers/compiler.json"
8999

90100
- name: Install rapidsai/sccache
91-
if: ${{ startsWith(inputs.host-platform, 'linux') && (env.BUILD_BINDINGS == 'true' || env.BUILD_CORE == 'true' || env.TEST_BINDINGS == 'true') }}
101+
if: ${{ startsWith(inputs.host-platform, 'linux') && (env.BUILD_BINDINGS == 'true' || env.BUILD_CORE == 'true' || env.BUILD_MAINTENANCE_BINDINGS == 'true') }}
92102
uses: ./.github/actions/install-sccache
93103

94104
# The runner only exposes these values to actions, not to `run:` steps or
95105
# the cibuildwheel container, so re-export them for sccache's GHA backend.
96106
# xref: https://github.com/orgs/community/discussions/42856#discussioncomment-7678867
97107
- name: Adding addtional GHA cache-related env vars
98-
if: ${{ env.BUILD_BINDINGS == 'true' || env.BUILD_CORE == 'true' || env.TEST_BINDINGS == 'true' }}
108+
if: ${{ env.BUILD_BINDINGS == 'true' || env.BUILD_CORE == 'true' || env.BUILD_MAINTENANCE_BINDINGS == 'true' }}
99109
uses: actions/github-script@v9.0.0
100110
with:
101111
script: |
@@ -203,7 +213,7 @@ jobs:
203213
twine check --strict cuda_pathfinder/*.whl
204214
205215
- name: Constrain builds to the local cuda.pathfinder wheel
206-
if: ${{ env.BUILD_BINDINGS == 'true' || env.TEST_BINDINGS == 'true' }}
216+
if: ${{ env.BUILD_BINDINGS == 'true' || env.BUILD_MAINTENANCE_BINDINGS == 'true' }}
207217
run: |
208218
pathfinder_wheels=(cuda_pathfinder/cuda_pathfinder-*.whl)
209219
test "${#pathfinder_wheels[@]}" -eq 1
@@ -419,6 +429,23 @@ jobs:
419429
run-id: ${{ env.BASELINE_RUN_ID }}
420430

421431
# We only need/want a single pure python wheel, pick linux-64 index 0.
432+
- name: Build and check maintenance cuda-python wheel
433+
if: ${{ !inputs.single-cuda-major && (env.BUILD_PYTHON == 'true' || env.TEST_PYTHON == 'true') && strategy.job-index == 0 && inputs.host-platform == 'linux-64' }}
434+
run: |
435+
pushd cuda_python
436+
CUDA_PYTHON_BUILD_MAJOR="${MAINTENANCE_CUDA_MAJOR}" \
437+
pip wheel -v --no-deps --wheel-dir "dist/cu${MAINTENANCE_CUDA_MAJOR}" .
438+
twine check --strict "dist/cu${MAINTENANCE_CUDA_MAJOR}"/*.whl
439+
popd
440+
441+
- name: Upload maintenance cuda-python wheel
442+
if: ${{ !inputs.single-cuda-major && (env.BUILD_PYTHON == 'true' || env.TEST_PYTHON == 'true') && strategy.job-index == 0 && inputs.host-platform == 'linux-64' }}
443+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
444+
with:
445+
name: maintenance-python-wheel
446+
path: cuda_python/dist/cu${{ env.MAINTENANCE_CUDA_MAJOR }}/*.whl
447+
if-no-files-found: error
448+
422449
- name: Build and check cuda-python wheel
423450
if: ${{ env.BUILD_PYTHON == 'true' && strategy.job-index == 0 && inputs.host-platform == 'linux-64' }}
424451
run: |
@@ -533,7 +560,7 @@ jobs:
533560

534561
# Note: This overwrites CUDA_PATH etc
535562
- name: Set up mini CTK
536-
if: ${{ !inputs.single-cuda-major && (env.BUILD_CORE == 'true' || env.TEST_CORE == 'true' || env.BUILD_BINDINGS == 'true' || env.TEST_BINDINGS == 'true') }}
563+
if: ${{ !inputs.single-cuda-major && (env.BUILD_CORE == 'true' || env.TEST_CORE == 'true' || env.BUILD_MAINTENANCE_BINDINGS == 'true') }}
537564
uses: ./.github/actions/fetch_ctk
538565
continue-on-error: false
539566
with:
@@ -558,12 +585,8 @@ jobs:
558585
${{ env.CUDA_CORE_TEST_BINARIES_DIR }}/*.lib
559586
if-no-files-found: error
560587

561-
- name: Install GitHub CLI
562-
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
563-
uses: ./.github/actions/install-gh-cli
564-
565588
- name: Build maintenance cuda.bindings wheel
566-
if: ${{ !inputs.single-cuda-major && (env.BUILD_BINDINGS == 'true' || env.TEST_BINDINGS == 'true') }}
589+
if: ${{ env.BUILD_MAINTENANCE_BINDINGS == 'true' }}
567590
uses: pypa/cibuildwheel@f9b966cfadf4109556cadc5bb39ddb72d0ce664e # v4.3.5
568591
with:
569592
package-dir: ./${{ env.MAINTENANCE_BINDINGS_ROOT }}/
@@ -573,11 +596,11 @@ jobs:
573596
env: *bindings-wheel-env
574597

575598
- name: Check maintenance cuda.bindings wheel
576-
if: ${{ !inputs.single-cuda-major && (env.BUILD_BINDINGS == 'true' || env.TEST_BINDINGS == 'true') }}
599+
if: ${{ env.BUILD_MAINTENANCE_BINDINGS == 'true' }}
577600
run: twine check --strict "${MAINTENANCE_BINDINGS_ARTIFACTS_DIR}"/*.whl
578601

579602
- name: Upload maintenance cuda.bindings wheel
580-
if: ${{ !inputs.single-cuda-major && (env.BUILD_BINDINGS == 'true' || env.TEST_BINDINGS == 'true') }}
603+
if: ${{ env.BUILD_MAINTENANCE_BINDINGS == 'true' }}
581604
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
582605
with:
583606
name: ${{ env.MAINTENANCE_BINDINGS_ARTIFACT_NAME }}
@@ -603,36 +626,11 @@ jobs:
603626
path: ${{ env.MAINTENANCE_BINDINGS_CYTHON_TESTS_DIR }}/test_*${{ env.PY_EXT_SUFFIX }}
604627
if-no-files-found: error
605628

606-
- name: Look up prior-branch cuda.bindings run ID
607-
id: prior-bindings
608-
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
609-
env:
610-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
611-
run: |
612-
OLD_BRANCH=$(yq '.backport_branch' ci/versions.yml)
613-
OLD_ARTIFACT_PATTERN="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda*-${{ inputs.host-platform }}-*[0-9a-f]"
614-
LATEST_PRIOR_RUN_ID=$(./ci/tools/lookup-run-id \
615-
--branch "${OLD_BRANCH}" \
616-
--artifact "${OLD_ARTIFACT_PATTERN}" \
617-
NVIDIA/cuda-python "CI")
618-
echo "run-id=${LATEST_PRIOR_RUN_ID}" >> "${GITHUB_OUTPUT}"
619-
echo "artifact-pattern=${OLD_ARTIFACT_PATTERN}" >> "${GITHUB_OUTPUT}"
620-
621-
- name: Download prior-branch cuda.bindings build artifacts
622-
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
623-
uses: $/.github/actions/download-artifact-retry
624-
with:
625-
pattern: ${{ steps.prior-bindings.outputs.artifact-pattern }}
626-
merge-multiple: "true"
627-
path: cuda_bindings_13/dist-prev
628-
run-id: ${{ steps.prior-bindings.outputs.run-id }}
629-
github-token: ${{ secrets.GITHUB_TOKEN }}
630-
631-
- name: Constrain previous cuda.core to the downloaded cuda.bindings wheel
629+
- name: Constrain maintenance cuda.core to the same-run cuda.bindings wheel
632630
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
633631
run: |
634632
pathfinder_wheels=(cuda_pathfinder/cuda_pathfinder-*.whl)
635-
bindings_wheels=(cuda_bindings_13/dist-prev/cuda_bindings-"${BUILD_PREV_CUDA_MAJOR}".*.whl)
633+
bindings_wheels=("${MAINTENANCE_BINDINGS_ARTIFACTS_DIR}"/cuda_bindings-"${MAINTENANCE_CUDA_MAJOR}".*.whl)
636634
test "${#pathfinder_wheels[@]}" -eq 1
637635
test "${#bindings_wheels[@]}" -eq 1
638636
test -f "${pathfinder_wheels[0]}"
@@ -726,6 +724,40 @@ jobs:
726724
727725
ls -lahR ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
728726
727+
- name: Build maintenance cuda.core Cython tests
728+
if: ${{ !inputs.single-cuda-major && env.TEST_CORE == 'true' }}
729+
run: |
730+
# The current package's test extensions were built in this same source tree.
731+
# Remove generated outputs so Cython and the compiler cannot reuse them.
732+
find "${{ env.CUDA_CORE_CYTHON_TESTS_DIR }}" -maxdepth 1 -type f \
733+
\( -name 'test_*.cpp' -o -name 'test_*.so' -o -name 'test_*.pyd' \) -delete
734+
if [[ -d "${{ env.CUDA_CORE_CYTHON_TESTS_DIR }}/build" ]]; then
735+
find "${{ env.CUDA_CORE_CYTHON_TESTS_DIR }}/build" -type f -delete
736+
fi
737+
pip uninstall -y cuda-bindings cuda-core
738+
pip install ${{ env.MAINTENANCE_BINDINGS_ARTIFACTS_DIR }}/*.whl
739+
if ${{ env.BUILD_CORE == 'true' }}; then
740+
core_wheel=$(find "${{ env.CUDA_CORE_ARTIFACTS_DIR }}/cu${MAINTENANCE_CUDA_MAJOR}" -maxdepth 1 -type f -name '*.whl' -print -quit)
741+
else
742+
core_wheel=$(find "${{ env.CUDA_CORE_ARTIFACTS_DIR }}" -maxdepth 1 -type f -name '*.whl' -print -quit)
743+
fi
744+
if [[ -z "${core_wheel}" ]]; then
745+
echo "No cuda.core wheel found" >&2
746+
exit 1
747+
fi
748+
pip install "${core_wheel}" --group ./cuda_core/pyproject.toml:test
749+
pushd ${{ env.CUDA_CORE_CYTHON_TESTS_DIR }}
750+
bash build_tests.sh
751+
popd
752+
753+
- name: Upload maintenance cuda.core Cython tests
754+
if: ${{ !inputs.single-cuda-major && env.TEST_CORE == 'true' }}
755+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
756+
with:
757+
name: ${{ env.CUDA_CORE_ARTIFACT_NAME }}-cu${{ env.MAINTENANCE_CUDA_MAJOR }}-tests
758+
path: ${{ env.CUDA_CORE_CYTHON_TESTS_DIR }}/test_*${{ env.PY_EXT_SUFFIX }}
759+
if-no-files-found: error
760+
729761
- name: Merge cuda.core wheels
730762
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
731763
run: |

‎.github/workflows/ci.yml‎

Lines changed: 16 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,10 @@ jobs:
499499
# - host-platform value
500500
# - uses: (test-sdist-linux.yml vs test-sdist-windows.yml)
501501
test-sdist-linux:
502+
strategy:
503+
fail-fast: false
504+
matrix:
505+
package: ${{ fromJSON(needs.ci-vars.outputs.BINDINGS_CONFIG).package_roots }}
502506
needs:
503507
- ci-vars
504508
- should-skip
@@ -516,11 +520,15 @@ jobs:
516520
uses: ./.github/workflows/test-sdist-linux.yml
517521
with:
518522
host-platform: linux-64
519-
cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
523+
bindings-package: ${{ toJSON(matrix.package) }}
520524
workplan: ${{ needs.detect-changes.outputs.workplan }}
521525

522526
# See test-sdist-linux for why sdist test jobs are split by platform.
523527
test-sdist-windows:
528+
strategy:
529+
fail-fast: false
530+
matrix:
531+
package: ${{ fromJSON(needs.ci-vars.outputs.BINDINGS_CONFIG).package_roots }}
524532
needs:
525533
- ci-vars
526534
- should-skip
@@ -539,7 +547,7 @@ jobs:
539547
uses: ./.github/workflows/test-sdist-windows.yml
540548
with:
541549
host-platform: win-64
542-
cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
550+
bindings-package: ${{ toJSON(matrix.package) }}
543551
workplan: ${{ needs.detect-changes.outputs.workplan }}
544552

545553
# NOTE: Test jobs are split by platform for the same reason as build jobs (see
@@ -568,9 +576,10 @@ jobs:
568576
secrets: inherit
569577
uses: ./.github/workflows/test-wheel-linux.yml
570578
with:
571-
build-type: pull-request
579+
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
572580
host-platform: ${{ matrix.host-platform }}
573581
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
582+
bindings-config: ${{ needs.ci-vars.outputs.BINDINGS_CONFIG }}
574583
nruns: ${{ (github.event_name == 'schedule' && 5) || 1}}
575584
workplan: ${{ needs.detect-changes.outputs.workplan }}
576585

@@ -597,9 +606,10 @@ jobs:
597606
secrets: inherit
598607
uses: ./.github/workflows/test-wheel-linux.yml
599608
with:
600-
build-type: pull-request
609+
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
601610
host-platform: ${{ matrix.host-platform }}
602611
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
612+
bindings-config: ${{ needs.ci-vars.outputs.BINDINGS_CONFIG }}
603613
nruns: ${{ (github.event_name == 'schedule' && 5) || 1}}
604614
workplan: ${{ needs.detect-changes.outputs.workplan }}
605615

@@ -626,90 +636,11 @@ jobs:
626636
secrets: inherit
627637
uses: ./.github/workflows/test-wheel-windows.yml
628638
with:
629-
build-type: pull-request
639+
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
630640
host-platform: ${{ matrix.host-platform }}
631641
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
632-
nruns: ${{ (github.event_name == 'schedule' && 5) || 1}}
633-
workplan: ${{ needs.detect-changes.outputs.workplan }}
634-
635-
test-maintenance-bindings-linux-64:
636-
name: Maintenance bindings (linux-64)
637-
if: ${{ github.repository_owner == 'nvidia' &&
638-
!fromJSON(needs.should-skip.outputs.skip) &&
639-
!fromJSON(needs.should-skip.outputs.doc-only) &&
640-
fromJSON(needs.detect-changes.outputs.workplan).modules.bindings.needs_test &&
641-
fromJSON(needs.detect-changes.outputs.workplan).jobs.platforms.linux }}
642-
permissions:
643-
actions: read
644-
contents: read
645-
needs:
646-
- ci-vars
647-
- should-skip
648-
- detect-changes
649-
- build-linux-64
650-
secrets: inherit
651-
uses: ./.github/workflows/test-wheel-linux.yml
652-
with:
653-
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
654-
host-platform: linux-64
655-
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
656642
bindings-config: ${{ needs.ci-vars.outputs.BINDINGS_CONFIG }}
657-
maintenance-bindings: true
658-
nruns: ${{ (github.event_name == 'schedule' && 5) || 1 }}
659-
workplan: ${{ needs.detect-changes.outputs.workplan }}
660-
661-
test-maintenance-bindings-linux-aarch64:
662-
name: Maintenance bindings (linux-aarch64)
663-
if: ${{ github.repository_owner == 'nvidia' &&
664-
!fromJSON(needs.should-skip.outputs.skip) &&
665-
!fromJSON(needs.should-skip.outputs.doc-only) &&
666-
fromJSON(needs.detect-changes.outputs.workplan).modules.bindings.needs_test &&
667-
fromJSON(needs.detect-changes.outputs.workplan).jobs.platforms.linux }}
668-
permissions:
669-
actions: read
670-
contents: read
671-
needs:
672-
- ci-vars
673-
- should-skip
674-
- detect-changes
675-
- build-linux-64
676-
- build-linux-aarch64
677-
secrets: inherit
678-
uses: ./.github/workflows/test-wheel-linux.yml
679-
with:
680-
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
681-
host-platform: linux-aarch64
682-
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
683-
bindings-config: ${{ needs.ci-vars.outputs.BINDINGS_CONFIG }}
684-
maintenance-bindings: true
685-
nruns: ${{ (github.event_name == 'schedule' && 5) || 1 }}
686-
workplan: ${{ needs.detect-changes.outputs.workplan }}
687-
688-
test-maintenance-bindings-windows:
689-
name: Maintenance bindings (win-64)
690-
if: ${{ github.repository_owner == 'nvidia' &&
691-
!fromJSON(needs.should-skip.outputs.skip) &&
692-
!fromJSON(needs.should-skip.outputs.doc-only) &&
693-
fromJSON(needs.detect-changes.outputs.workplan).modules.bindings.needs_test &&
694-
fromJSON(needs.detect-changes.outputs.workplan).jobs.platforms.windows }}
695-
permissions:
696-
actions: read
697-
contents: read
698-
needs:
699-
- ci-vars
700-
- should-skip
701-
- detect-changes
702-
- build-linux-64
703-
- build-windows
704-
secrets: inherit
705-
uses: ./.github/workflows/test-wheel-windows.yml
706-
with:
707-
build-type: ${{ startsWith(github.ref_name, 'pull-request/') && 'pull-request' || (github.event_name == 'schedule' && 'nightly' || 'branch') }}
708-
host-platform: win-64
709-
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
710-
bindings-config: ${{ needs.ci-vars.outputs.BINDINGS_CONFIG }}
711-
maintenance-bindings: true
712-
nruns: ${{ (github.event_name == 'schedule' && 5) || 1 }}
643+
nruns: ${{ (github.event_name == 'schedule' && 5) || 1}}
713644
workplan: ${{ needs.detect-changes.outputs.workplan }}
714645

715646
doc:
@@ -746,9 +677,6 @@ jobs:
746677
- test-linux-64
747678
- test-linux-aarch64
748679
- test-windows
749-
- test-maintenance-bindings-linux-64
750-
- test-maintenance-bindings-linux-aarch64
751-
- test-maintenance-bindings-windows
752680
- api-check-core-vs-release
753681
- api-check-core-vs-base
754682
- doc
@@ -776,7 +704,6 @@ jobs:
776704
windows_selected="${{ needs.detect-changes.outputs.workplan && fromJSON(needs.detect-changes.outputs.workplan).jobs.platforms.windows || false }}"
777705
windows_arm64_supported="${{ needs.ci-vars.outputs.WINDOWS_ARM64_SUPPORTED }}"
778706
build_selected="${{ needs.detect-changes.outputs.workplan && fromJSON(needs.detect-changes.outputs.workplan).jobs.sdist_tests || false }}"
779-
maintenance_bindings_selected="${{ needs.detect-changes.outputs.workplan && fromJSON(needs.detect-changes.outputs.workplan).modules.bindings.needs_test || false }}"
780707
run_core_api_check="${{ needs.detect-changes.outputs.workplan && fromJSON(needs.detect-changes.outputs.workplan).jobs.core_api_checks || false }}"
781708
is_pr="${{ startsWith(github.ref_name, 'pull-request/') }}"
782709
status="success"
@@ -827,16 +754,6 @@ jobs:
827754
check_result "test-linux-aarch64" "$linux_expected"
828755
check_result "test-windows" "$windows_expected"
829756
830-
maintenance_linux_expected="skipped"
831-
maintenance_windows_expected="skipped"
832-
if [[ "$maintenance_bindings_selected" == "true" ]]; then
833-
maintenance_linux_expected="$linux_expected"
834-
maintenance_windows_expected="$windows_expected"
835-
fi
836-
check_result "test-maintenance-bindings-linux-64" "$maintenance_linux_expected"
837-
check_result "test-maintenance-bindings-linux-aarch64" "$maintenance_linux_expected"
838-
check_result "test-maintenance-bindings-windows" "$maintenance_windows_expected"
839-
840757
# API compatibility checks run for cuda_core source changes and for
841758
# conservative full runs when reusable base artifacts are unavailable.
842759
expected="skipped"

0 commit comments

Comments
 (0)