From 86b9bd19ef542db328712a3e6dde0219176bd5b3 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 13 May 2026 09:51:06 -0500 Subject: [PATCH 1/3] Split PR devcontainer job into pip and conda workflows Use build-in-devcontainer python_package_manager for each variant; require devcontainers-conda in pr-builder and ignore devcontainers-pip for dependency checks. --- .github/workflows/pr.yaml | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index b8e6bb8bfd69..19a8fb3c6ecf 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -34,7 +34,7 @@ jobs: - cudf-polars-polars-tests - wheel-build-dask-cudf - wheel-tests-dask-cudf - - devcontainer + - devcontainers-conda - unit-tests-cudf-pandas - pandas-tests - narwhals-tests @@ -334,7 +334,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 wheel-tests-cudf-polars-with-rapidsmpf" + ignored_pr_jobs: "telemetry-summarize spark-rapids-jni wheel-tests-cudf-polars-with-rapidsmpf devcontainers-pip" conda-cpp-build: needs: checks permissions: @@ -670,7 +670,7 @@ jobs: 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: + devcontainers-pip: permissions: actions: read contents: read @@ -683,6 +683,38 @@ jobs: with: arch: '["amd64", "arm64"]' cuda: '["13.1"]' + python_package_manager: '["pip"]' + 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; + devcontainers-conda: + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] + needs: telemetry-setup + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main + with: + arch: '["amd64", "arm64"]' + cuda: '["13.1"]' + python_package_manager: '["conda"]' node_type: "cpu8" timeout-minutes: 90 env: | From 1ffb236b15cee9d2bb19d5d6821a77198e091043 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 13 May 2026 09:57:16 -0500 Subject: [PATCH 2/3] Deduplicate devcontainer jobs with YAML anchors; list conda first --- .github/workflows/pr.yaml | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 19a8fb3c6ecf..55412abf8b73 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -670,8 +670,8 @@ jobs: 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 - devcontainers-pip: - permissions: + devcontainers-conda: + permissions: &devcontainers-permissions actions: read contents: read id-token: write @@ -683,7 +683,7 @@ jobs: with: arch: '["amd64", "arm64"]' cuda: '["13.1"]' - python_package_manager: '["pip"]' + python_package_manager: '["conda"]' node_type: "cpu8" timeout-minutes: 90 env: | @@ -694,27 +694,22 @@ jobs: # 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: | + build_command: &devcontainers-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; - devcontainers-conda: - permissions: - actions: read - contents: read - id-token: write - packages: read - pull-requests: read + devcontainers-pip: + permissions: *devcontainers-permissions secrets: inherit # zizmor: ignore[secrets-inherit] needs: telemetry-setup uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main with: arch: '["amd64", "arm64"]' cuda: '["13.1"]' - python_package_manager: '["conda"]' + python_package_manager: '["pip"]' node_type: "cpu8" timeout-minutes: 90 env: | @@ -725,13 +720,7 @@ jobs: # 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; + build_command: *devcontainers-build-command unit-tests-cudf-pandas: needs: [wheel-build-cudf, changed-files] permissions: From a3a2576762fe53902a3f3a6276315f81a0e6443b Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 13 May 2026 10:00:00 -0500 Subject: [PATCH 3/3] Remove duplicate devcontainers-pip build_command comments --- .github/workflows/pr.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 55412abf8b73..6c1a402791d3 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -716,10 +716,6 @@ jobs: 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: *devcontainers-build-command unit-tests-cudf-pandas: needs: [wheel-build-cudf, changed-files]