From 6de29d8eff42ba9bdd627f6747de17cb159f7424 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 25 Aug 2026 13:16:48 -0500 Subject: [PATCH 1/6] Improve Spark build workflow --- .github/workflows/pr.yaml | 2 + .github/workflows/spark-rapids-jni.yaml | 98 ++++++++++++------------- 2 files changed, 48 insertions(+), 52 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 1faa32b5f60a..2fae0241cd3b 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -983,6 +983,8 @@ jobs: pull-requests: read uses: ./.github/workflows/spark-rapids-jni.yaml if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java + with: + cudf_commit: ${{ github.sha }} telemetry-summarize: # This job must use a self-hosted runner to record telemetry traces. runs-on: linux-amd64-cpu4 diff --git a/.github/workflows/spark-rapids-jni.yaml b/.github/workflows/spark-rapids-jni.yaml index 7841ab299b8f..cdf0889b9dbc 100644 --- a/.github/workflows/spark-rapids-jni.yaml +++ b/.github/workflows/spark-rapids-jni.yaml @@ -1,7 +1,34 @@ name: spark-rapids-jni on: + workflow_dispatch: + inputs: + cudf_repository: &cudf_repository + description: 'cuDF repository' + type: string + required: false + default: 'NVIDIA/cudf' + cudf_commit: &cudf_commit + description: 'cuDF commit SHA or branch' + type: string + required: false + default: 'release/26.08' + spark_rapids_jni_repository: &spark_rapids_jni_repository + description: 'spark-rapids-jni repository' + type: string + required: false + default: 'NVIDIA/spark-rapids-jni' + spark_rapids_jni_commit: &spark_rapids_jni_commit + description: 'spark-rapids-jni commit SHA or branch' + type: string + required: false + default: 'release/26.08' workflow_call: + inputs: + cudf_repository: *cudf_repository + cudf_commit: *cudf_commit + spark_rapids_jni_repository: *spark_rapids_jni_repository + spark_rapids_jni_commit: *spark_rapids_jni_commit jobs: spark-rapids-jni-build: @@ -9,23 +36,36 @@ jobs: container: image: rapidsai/ci-spark-rapids-jni:rockylinux8-cuda12.9.1 permissions: + contents: read id-token: write steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: persist-credentials: false - repository: NVIDIA/spark-rapids-jni + repository: ${{ inputs.spark_rapids_jni_repository }} submodules: recursive - ref: ${{ github.event.pull_request.base.ref }} + ref: ${{ inputs.spark_rapids_jni_commit }} - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: persist-credentials: false + repository: ${{ inputs.cudf_repository }} + ref: ${{ inputs.cudf_commit }} path: thirdparty/cudf - - uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0 + - name: Install gha-tools + run: | + dnf -y install jq + wget https://github.com/rapidsai/gha-tools/releases/latest/download/tools.tar.gz -O - | tar -xz -C /usr/local/bin + - uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} role-duration-seconds: 43200 # 12h + - name: Setup sccache-dist + uses: rapidsai/shared-actions/setup-sccache-dist@main + env: + AWS_REGION: "${{ env.AWS_REGION }}" + AWS_ACCESS_KEY_ID: "${{ env.AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ env.AWS_SECRET_ACCESS_KEY }}" - name: "Build spark-rapids-jni" env: SCCACHE_S3_KEY_PREFIX: spark-rapids-jni @@ -34,61 +74,15 @@ jobs: run: | set -euo pipefail - ### - # Setup sccache client - ### - - # Install jq - dnf -y install jq - - # Download gha-tools - wget https://github.com/rapidsai/gha-tools/releases/latest/download/tools.tar.gz -O - | tar -xz -C /usr/local/bin - - # Build cluster endpoint - export SCCACHE_DIST_SCHEDULER_URL="https://$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/').linux.sccache.rapids.nvidia.com" - - export SCCACHE_DIST_AUTH_TOKEN="$( - curl -fsSL -H "Authorization: Bearer $( - curl -fsSL -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \ - "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=token.rapids.nvidia.com" \ - | jq -r '.value' - )" https://token.rapids.nvidia.com/gh/token/exchange \ - | jq -r '.token')" - - # Install sccache client - . rapids-install-sccache - - # Configure sccache - . rapids-configure-sccache + rapids-install-sccache + rapids-configure-sccache export CPP_PARALLEL_LEVEL="$PARALLEL_LEVEL" # Don't use the build cluster for CMake's compiler tests echo -e '\nset(ENV{SCCACHE_NO_DIST_COMPILE} "1")' >> thirdparty/cudf-pins/add_dependency_pins.cmake - echo "------------------------" - env | sort - echo "------------------------" - - # Increase the nofile ulimit to build with as much parallelism as possible - ulimit -n $(ulimit -Hn) - - # Start the sccache daemon - sccache --start-server - - # Verify sccache version and distributed compilation - sccache --show-stats - - if sccache --dist-status 2>/dev/null | jq -er '.SchedulerStatus? != null' >/dev/null 2>&1; then - echo "Distributed compilation is available:" - sccache --dist-status | jq -r '["scheduler URL: " + .SchedulerStatus[0], "server count: " + (.SchedulerStatus[1].servers | length | tostring)][]'; - else - echo "Error: Distributed compilation not available, check connectivity" - cat "$SCCACHE_ERROR_LOG"; - exit 1 - fi - mkdir target - source build/env.sh && CMAKE_CUDA_ARCHITECTURES=90 LIBCUDF_DEPENDENCY_MODE=latest USE_GDS=on ${sclCMD} build/buildcpp.sh + source build/env.sh && CMAKE_CUDA_ARCHITECTURES=75 LIBCUDF_DEPENDENCY_MODE=latest USE_GDS=on ${sclCMD} build/buildcpp.sh sccache --show-stats From a11dc27203a068789cda0b23ab6540f0965b1e0f Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 25 Aug 2026 14:56:38 -0500 Subject: [PATCH 2/6] Update cudf-spark-jni build workflow --- ...rk-rapids-jni.yaml => cudf-spark-jni.yaml} | 48 +++++++++++-------- .github/workflows/pr.yaml | 6 +-- 2 files changed, 31 insertions(+), 23 deletions(-) rename .github/workflows/{spark-rapids-jni.yaml => cudf-spark-jni.yaml} (66%) diff --git a/.github/workflows/spark-rapids-jni.yaml b/.github/workflows/cudf-spark-jni.yaml similarity index 66% rename from .github/workflows/spark-rapids-jni.yaml rename to .github/workflows/cudf-spark-jni.yaml index cdf0889b9dbc..d14836c9d034 100644 --- a/.github/workflows/spark-rapids-jni.yaml +++ b/.github/workflows/cudf-spark-jni.yaml @@ -1,4 +1,4 @@ -name: spark-rapids-jni +name: cudf-spark-jni on: workflow_dispatch: @@ -12,26 +12,25 @@ on: description: 'cuDF commit SHA or branch' type: string required: false - default: 'release/26.08' - spark_rapids_jni_repository: &spark_rapids_jni_repository - description: 'spark-rapids-jni repository' + default: 'main' + cudf_spark_jni_repository: &cudf_spark_jni_repository + description: 'cudf-spark-jni repository' type: string required: false - default: 'NVIDIA/spark-rapids-jni' - spark_rapids_jni_commit: &spark_rapids_jni_commit - description: 'spark-rapids-jni commit SHA or branch' + default: 'NVIDIA/cudf-spark-jni' + cudf_spark_jni_commit: &cudf_spark_jni_commit + description: 'cudf-spark-jni commit SHA or branch; defaults to cuDF RAPIDS_BRANCH' type: string required: false - default: 'release/26.08' workflow_call: inputs: cudf_repository: *cudf_repository cudf_commit: *cudf_commit - spark_rapids_jni_repository: *spark_rapids_jni_repository - spark_rapids_jni_commit: *spark_rapids_jni_commit + cudf_spark_jni_repository: *cudf_spark_jni_repository + cudf_spark_jni_commit: *cudf_spark_jni_commit jobs: - spark-rapids-jni-build: + cudf-spark-jni-build: runs-on: linux-amd64-cpu8 container: image: rapidsai/ci-spark-rapids-jni:rockylinux8-cuda12.9.1 @@ -42,15 +41,23 @@ jobs: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: persist-credentials: false - repository: ${{ inputs.spark_rapids_jni_repository }} - submodules: recursive - ref: ${{ inputs.spark_rapids_jni_commit }} + repository: ${{ inputs.cudf_repository }} + ref: ${{ inputs.cudf_commit }} + path: cudf-local + - id: rapids-branch + if: inputs.cudf_spark_jni_commit == '' + run: echo "branch=$(cat cudf-local/RAPIDS_BRANCH)" >> "$GITHUB_OUTPUT" - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: persist-credentials: false - repository: ${{ inputs.cudf_repository }} - ref: ${{ inputs.cudf_commit }} - path: thirdparty/cudf + repository: ${{ inputs.cudf_spark_jni_repository }} + submodules: recursive + ref: ${{ inputs.cudf_spark_jni_commit || steps.rapids-branch.outputs.branch }} + path: cudf-spark-jni + - name: Use selected cuDF checkout + run: | + rm -rf cudf-spark-jni/thirdparty/cudf + mv cudf-local cudf-spark-jni/thirdparty/cudf - name: Install gha-tools run: | dnf -y install jq @@ -66,11 +73,12 @@ jobs: AWS_REGION: "${{ env.AWS_REGION }}" AWS_ACCESS_KEY_ID: "${{ env.AWS_ACCESS_KEY_ID }}" AWS_SECRET_ACCESS_KEY: "${{ env.AWS_SECRET_ACCESS_KEY }}" - - name: "Build spark-rapids-jni" + - name: "Build cudf-spark-jni" env: - SCCACHE_S3_KEY_PREFIX: spark-rapids-jni - SCCACHE_S3_PREPROCESSOR_CACHE_KEY_PREFIX: spark-rapids-jni/preprocessor + SCCACHE_S3_KEY_PREFIX: cudf-spark-jni + SCCACHE_S3_PREPROCESSOR_CACHE_KEY_PREFIX: cudf-spark-jni/preprocessor SCCACHE_S3_USE_PREPROCESSOR_CACHE_MODE: true + working-directory: cudf-spark-jni run: | set -euo pipefail diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 2fae0241cd3b..f5e5fc920d55 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -373,7 +373,7 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main with: enable_check_generated_files: false - ignored_pr_jobs: "telemetry-summarize spark-rapids-jni cuml-compat-tests" + ignored_pr_jobs: "telemetry-summarize cudf-spark-jni cuml-compat-tests" conda-cpp-build: needs: [build-details, checks] permissions: @@ -973,7 +973,7 @@ jobs: node_type: "gpu-l4-latest-1" container_image: "rapidsai/ci-conda:26.10-latest" script: ci/test_narwhals.sh - spark-rapids-jni: + cudf-spark-jni: needs: changed-files permissions: actions: read @@ -981,7 +981,7 @@ jobs: id-token: write packages: read pull-requests: read - uses: ./.github/workflows/spark-rapids-jni.yaml + uses: ./.github/workflows/cudf-spark-jni.yaml if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java with: cudf_commit: ${{ github.sha }} From 6024e275bd49e12ab55deba5bc975bc92405b25a Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 25 Aug 2026 23:14:21 -0500 Subject: [PATCH 3/6] Use triggering ref for default cuDF checkout --- .github/workflows/cudf-spark-jni.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cudf-spark-jni.yaml b/.github/workflows/cudf-spark-jni.yaml index d14836c9d034..d75046711001 100644 --- a/.github/workflows/cudf-spark-jni.yaml +++ b/.github/workflows/cudf-spark-jni.yaml @@ -12,7 +12,6 @@ on: description: 'cuDF commit SHA or branch' type: string required: false - default: 'main' cudf_spark_jni_repository: &cudf_spark_jni_repository description: 'cudf-spark-jni repository' type: string From 4c1db1c889957940959b51d6a4a4dd9f60f7f66b Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 2 Sep 2026 13:10:35 -0500 Subject: [PATCH 4/6] Move cudf-spark-jni build to nightly tests --- .github/workflows/pr.yaml | 14 +------------- .github/workflows/test.yaml | 7 +++++++ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index f5e5fc920d55..69fe5e398263 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -373,7 +373,7 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main with: enable_check_generated_files: false - ignored_pr_jobs: "telemetry-summarize cudf-spark-jni cuml-compat-tests" + ignored_pr_jobs: "telemetry-summarize cuml-compat-tests" conda-cpp-build: needs: [build-details, checks] permissions: @@ -973,18 +973,6 @@ jobs: node_type: "gpu-l4-latest-1" container_image: "rapidsai/ci-conda:26.10-latest" script: ci/test_narwhals.sh - cudf-spark-jni: - needs: changed-files - permissions: - actions: read - contents: read - id-token: write - packages: read - pull-requests: read - uses: ./.github/workflows/cudf-spark-jni.yaml - if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java - with: - cudf_commit: ${{ github.sha }} telemetry-summarize: # This job must use a self-hosted runner to record telemetry traces. runs-on: linux-amd64-cpu4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1aaf1bdecda0..4d24a16f1412 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -346,3 +346,10 @@ jobs: node_type: "gpu-l4-latest-1" container_image: "rapidsai/ci-conda:26.10-latest" script: ci/test_narwhals.sh + cudf-spark-jni: + permissions: + contents: read + id-token: write + uses: ./.github/workflows/cudf-spark-jni.yaml + with: + cudf_commit: ${{ inputs.sha }} From 518cf4fe15d8192cffef131093e33627c361ea60 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 2 Sep 2026 13:30:25 -0500 Subject: [PATCH 5/6] Run cudf-spark-jni build for pull requests --- .github/workflows/pr.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 16386840606b..02277a786cd3 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -319,7 +319,7 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main with: enable_check_generated_files: false - ignored_pr_jobs: "telemetry-summarize cuml-compat-tests" + ignored_pr_jobs: "telemetry-summarize cudf-spark-jni cuml-compat-tests" conda-cpp-build: needs: [build-details, checks] permissions: @@ -949,6 +949,18 @@ jobs: node_type: "gpu-rtxpro6000-latest-1" container_image: "rapidsai/ci-conda:26.10-latest" script: ci/test_narwhals.sh + cudf-spark-jni: + needs: changed-files + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + uses: ./.github/workflows/cudf-spark-jni.yaml + if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java + with: + cudf_commit: ${{ github.sha }} telemetry-summarize: # This job must use a self-hosted runner to record telemetry traces. runs-on: linux-amd64-cpu4 From dfbaf88c26f3af8882237754f18171eb8b4d1536 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 2 Sep 2026 15:48:41 -0500 Subject: [PATCH 6/6] Fix unset Spark build parallelism variable --- .github/workflows/cudf-spark-jni.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/cudf-spark-jni.yaml b/.github/workflows/cudf-spark-jni.yaml index d75046711001..58fd55ec23b2 100644 --- a/.github/workflows/cudf-spark-jni.yaml +++ b/.github/workflows/cudf-spark-jni.yaml @@ -84,8 +84,6 @@ jobs: rapids-install-sccache rapids-configure-sccache - export CPP_PARALLEL_LEVEL="$PARALLEL_LEVEL" - # Don't use the build cluster for CMake's compiler tests echo -e '\nset(ENV{SCCACHE_NO_DIST_COMPILE} "1")' >> thirdparty/cudf-pins/add_dependency_pins.cmake