Skip to content

Apply fix

Apply fix #35365

Workflow file for this run

name: pr
on:
push:
branches:
- "pull-request/[0-9]+"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Please keep pr-builder as the top job here
pr-builder:
needs:
- check-nightly-ci
- changed-files
- checks
- conda-cpp-build
- cpp-linters
- conda-cpp-checks
- conda-cpp-tests
- conda-python-build
- conda-python-build-noarch
- conda-python-cudf-tests
- conda-python-other-tests
- conda-java-tests
- conda-notebook-tests
- docs-build
- wheel-build-libcudf
- wheel-build-pylibcudf
- wheel-build-cudf
- wheel-tests-cudf
- wheel-build-cudf-polars
- wheel-tests-cudf-polars
- cudf-polars-polars-tests
- wheel-build-dask-cudf
- wheel-tests-dask-cudf
- devcontainer
- unit-tests-cudf-pandas
- pandas-tests
- narwhals-tests
- telemetry-setup
- third-party-integration-tests-cudf-pandas
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@main
if: always()
with:
needs: ${{ toJSON(needs) }}
telemetry-setup:
continue-on-error: true
runs-on: ubuntu-latest
env:
OTEL_SERVICE_NAME: 'pr-cudf'
steps:
- name: Telemetry setup
if: ${{ vars.TELEMETRY_ENABLED == 'true' }}
uses: rapidsai/shared-actions/telemetry-dispatch-stash-base-env-vars@main
check-nightly-ci:
runs-on: ubuntu-latest
permissions:
actions: read
id-token: write
env:
GH_TOKEN: ${{ github.token }}
steps:
- name: Get PR Info
id: get-pr-info
uses: nv-gha-runners/get-pr-info@main
- name: Check if nightly CI is passing
uses: rapidsai/shared-actions/check_nightly_success/dispatch@main
with:
repo: ${{ github.repository }}
target-branch: ${{ fromJSON(steps.get-pr-info.outputs.pr-info).base.ref }}
max-days-without-success: 14
changed-files:
secrets: inherit
needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@main
with:
files_yaml: |
build_docs:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/discover_libcudf_tests.sh'
- '!ci/release/update-version.sh'
- '!ci/run_*.sh'
- '!ci/test_*.sh'
- '!ci/validate_wheel.sh'
- '!codecov.yml'
test_cpp:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/cudf_pandas_scripts/**'
- '!ci/build_docs.sh'
- '!ci/build_python*.sh'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/cudf_pandas_scripts/**'
- '!ci/release/update-version.sh'
- '!ci/test_python*.sh'
- '!ci/test_wheel*.sh'
- '!ci/validate_wheel.sh'
- '!docs/**'
- '!img/**'
- '!java/**'
- '!notebooks/**'
- '!python/**'
test_cudf_pandas:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/release/update-version.sh'
- '!ci/test_java.sh'
- '!ci/validate_wheel.sh'
- '!docs/**'
- '!img/**'
- '!java/**'
- '!notebooks/**'
test_java:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_docs.sh'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/cudf_pandas_scripts/**'
- '!ci/release/update-version.sh'
- '!ci/test_wheel*.sh'
- '!ci/validate_wheel.sh'
- '!ci/release/update-version.sh'
- '!codecov.yml'
- '!docs/**'
- '!img/**'
- '!notebooks/**'
- '!python/**'
test_notebooks:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_wheel*.sh'
- '!ci/cudf_pandas_scripts/**'
- '!ci/release/update-version.sh'
- '!ci/test_wheel*.sh'
- '!ci/validate_wheel.sh'
- '!codecov.yml'
- '!java/**'
test_python_conda:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_docs.sh'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/cudf_pandas_scripts/**'
- '!ci/release/update-version.sh'
- '!ci/test_java.sh'
- '!ci/test_wheel*.sh'
- '!ci/validate_wheel.sh'
- '!docs/**'
- '!img/**'
- '!java/**'
- '!notebooks/**'
test_python_wheels:
- '**'
- '!**/REVIEW_GUIDELINES.md'
- '!.coderabbit.yaml'
- '!.clang-format'
- '!.devcontainer/**'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/PULL_REQUEST_TEMPLATE.md'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/auto-assign.yml'
- '!.github/workflows/issue-release-scheduled.yml'
- '!.github/workflows/labeler.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_cpp.sh'
- '!ci/build_docs.sh'
- '!ci/build_python_noarch.sh'
- '!ci/build_python.sh'
- '!ci/check-style.sh'
- '!ci/cudf_pandas_scripts/**'
- '!ci/release/update-version.sh'
- '!ci/test_cpp.sh'
- '!ci/test_cpp_common.sh'
- '!ci/test_cpp_memcheck.sh'
- '!ci/test_java.sh'
- '!ci/test_notebooks.sh'
- '!ci/test_python_common.sh'
- '!ci/test_python_cudf.sh'
- '!ci/test_python_other.sh'
- '!codecov.yml'
- '!conda/**'
- '!docs/**'
- '!img/**'
- '!java/**'
- '!notebooks/**'
not_cudf_polars:
- '**'
- '!python/cudf_polars/**'
neither_cudf_polars_nor_dask_cudf:
- '**'
- '!python/cudf_polars/**'
- '!python/dask_cudf/**'
neither_cudf_nor_dask_cudf:
- '**'
- '!python/cudf/**'
- '!python/dask_cudf/**'
neither_cpp_nor_cudf_polars_nor_dask_cudf:
- '**'
- '!cpp/**'
- '!python/cudf_polars/**'
- '!python/dask_cudf/**'
checks:
secrets: inherit
needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main
with:
enable_check_generated_files: false
ignored_pr_jobs: "telemetry-summarize spark-rapids-jni wheel-tests-cudf-polars-with-rapidsmpf"
conda-cpp-build:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@main
with:
build_type: pull-request
node_type: cpu16
script: ci/build_cpp.sh
cpp-linters:
secrets: inherit
needs: checks
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
with:
build_type: pull-request
script: "ci/cpp_linters.sh"
conda-cpp-checks:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-post-build-checks.yaml@main
with:
build_type: pull-request
conda-cpp-tests:
needs: [conda-cpp-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
with:
build_type: pull-request
script: ci/test_cpp.sh
conda-python-build:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
with:
build_type: pull-request
script: ci/build_python.sh
# Build a conda package for each CUDA x ARCH x minimum supported Python version
matrix_filter: group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(".") | map(tonumber)))
conda-python-build-noarch:
needs: [conda-cpp-build, conda-python-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
with:
build_type: pull-request
script: ci/build_python_noarch.sh
pure-conda: cuda_major
conda-python-cudf-tests:
needs: [conda-python-build, conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_polars_nor_dask_cudf
with:
build_type: pull-request
script: "ci/test_python_cudf.sh"
conda-python-other-tests:
# Tests for dask_cudf, custreamz, cudf_kafka are separated for CI parallelism
needs: [conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
build_type: pull-request
script: "ci/test_python_other.sh"
conda-java-tests:
needs: [conda-cpp-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java
with:
build_type: pull-request
node_type: "gpu-l4-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:26.06-latest"
script: "ci/test_java.sh"
conda-notebook-tests:
needs: [conda-python-build, conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks
with:
build_type: pull-request
node_type: "gpu-l4-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:26.06-latest"
script: "ci/test_notebooks.sh"
docs-build:
needs: [conda-python-build, conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs
with:
build_type: pull-request
node_type: "gpu-l4-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:26.06-latest"
script: "ci/build_docs.sh"
wheel-build-libcudf:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
with:
# build for every combination of arch and CUDA version, but only for the latest Python
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
build_type: pull-request
node_type: cpu16
script: "ci/build_wheel_libcudf.sh"
package-name: libcudf
package-type: cpp
wheel-build-pylibcudf:
needs: [checks, wheel-build-libcudf]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
with:
build_type: pull-request
node_type: cpu8
script: "ci/build_wheel_pylibcudf.sh"
package-name: pylibcudf
package-type: python
# Build a wheel for each CUDA x ARCH x minimum supported Python version
matrix_filter: group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(".") | map(tonumber)))
wheel-build-cudf:
needs: wheel-build-pylibcudf
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
with:
build_type: pull-request
node_type: cpu8
script: "ci/build_wheel_cudf.sh"
package-name: cudf
package-type: python
# Build a wheel for each CUDA x ARCH x minimum supported Python version
matrix_filter: group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(".") | map(tonumber)))
wheel-tests-cudf:
needs: [wheel-build-cudf, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_polars_nor_dask_cudf
with:
build_type: pull-request
script: ci/test_wheel_cudf.sh
wheel-build-cudf-polars:
needs: wheel-build-pylibcudf
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA".
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
node_type: cpu8
script: "ci/build_wheel_cudf_polars.sh"
package-name: cudf_polars
package-type: python
pure-wheel: true
wheel-tests-cudf-polars:
needs: [wheel-build-cudf-polars, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_nor_dask_cudf
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA".
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: "ci/test_wheel_cudf_polars.sh"
wheel-tests-cudf-polars-with-rapidsmpf:
needs: [wheel-build-cudf-polars, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_nor_dask_cudf
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA" to minimize CI usage.
# (rapidsmpf compatibility already validated in rapidsmpf CI)
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: "ci/test_cudf_polars_experimental.sh"
cudf-polars-polars-tests:
needs: [wheel-build-cudf-polars, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_nor_dask_cudf
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA".
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: "ci/test_cudf_polars_polars_tests.sh"
wheel-build-dask-cudf:
needs: wheel-build-cudf
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA".
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
node_type: cpu8
script: "ci/build_wheel_dask_cudf.sh"
package-name: dask_cudf
package-type: python
pure-wheel: true
wheel-tests-dask-cudf:
needs: [wheel-build-dask-cudf, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).not_cudf_polars
with:
# This selects "ARCH=amd64 + the latest supported Python + CUDA".
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: ci/test_wheel_dask_cudf.sh
devcontainer:
secrets: inherit
needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main
with:
arch: '["amd64", "arm64"]'
cuda: '["13.1"]'
node_type: "cpu8"
timeout-minutes: 90
env: |
SCCACHE_DIST_MAX_RETRIES=inf
SCCACHE_SERVER_LOG=sccache=debug
SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE=false
# clone-rapidsmpf to not use the rapidsmpf wheels from cudf_polars dependency
# librapidsmpf-cu13 wheels brings in a hardcoded libnuma-dev cmake target: https://github.com/NVIDIA/cuCascade/issues/118
# -DBUILD_TESTS=OFF to match rapidsmpf https://github.com/rapidsai/rapidsmpf/blob/main/.github/workflows/pr.yaml#L351 (leads to compilation errors)
# -DCUDF_BUILD_TESTUTIL=OFF to avoid IMPORTED_GLOBAL promotion errors when cuCascade's find_package(cudf) loads cudf-config.cmake from a CPM subdirectory
build_command: |
sccache --zero-stats;
clone-rapidsmpf -j$(nproc) -v -q --branch "$(cat ~/cudf/RAPIDS_BRANCH)" --clone-upstream --depth 1 --single-branch --shallow-submodules;
if [ "$PYTHON_PACKAGE_MANAGER" = "pip" ]; then rapids-make-pip-env --force; elif [ "$PYTHON_PACKAGE_MANAGER" = "conda" ]; then rapids-make-conda-env --force; fi;
rapids-generate-scripts;
build-all -j0 -DBUILD_BENCHMARKS=OFF -DBUILD_NUMA_SUPPORT=OFF -DBUILD_TESTS=OFF -DCUDF_BUILD_TESTUTIL=OFF --verbose 2>&1 | tee telemetry-artifacts/build.log;
sccache --show-adv-stats | tee telemetry-artifacts/sccache-stats.txt;
unit-tests-cudf-pandas:
needs: [wheel-build-cudf, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
if: (fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cudf_pandas) && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cudf_polars_nor_dask_cudf
with:
# This selects the latest supported Python + CUDA minor versions for each ARCH/CUDA major version combo
matrix_filter: group_by([(.ARCH), (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: ci/cudf_pandas_scripts/run_tests.sh
third-party-integration-tests-cudf-pandas:
needs: [conda-python-build, conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cpp_nor_cudf_polars_nor_dask_cudf
with:
build_type: pull-request
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
node_type: "gpu-l4-latest-1"
continue-on-error: true
container_image: "rapidsai/ci-conda:26.06-latest"
script: |
ci/cudf_pandas_scripts/third-party-integration/test.sh python/cudf/cudf_pandas_tests/third_party_integration_tests/dependencies.yaml
pandas-tests:
# run the Pandas unit tests using PR branch
needs: [wheel-build-cudf, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cpp_nor_cudf_polars_nor_dask_cudf
with:
build_type: pull-request
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
node_type: "gpu-l4-latest-1"
container_image: "rapidsai/citestwheel:26.06-latest"
script: ci/cudf_pandas_scripts/pandas-tests/run.sh pr
narwhals-tests:
needs: [conda-python-build, conda-python-build-noarch, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda && fromJSON(needs.changed-files.outputs.changed_file_groups).neither_cpp_nor_cudf_polars_nor_dask_cudf
with:
build_type: pull-request
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
node_type: "gpu-l4-latest-1"
container_image: "rapidsai/ci-conda:26.06-latest"
script: ci/test_narwhals.sh
spark-rapids-jni:
needs: changed-files
uses: ./.github/workflows/spark-rapids-jni.yaml
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java
telemetry-summarize:
# This job must use a self-hosted runner to record telemetry traces.
runs-on: linux-amd64-cpu4
needs: pr-builder
if: ${{ vars.TELEMETRY_ENABLED == 'true' && !cancelled() }}
continue-on-error: true
steps:
- name: Telemetry summarize
uses: rapidsai/shared-actions/telemetry-dispatch-summarize@main
env:
GH_TOKEN: ${{ github.token }}