Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 119 additions & 9 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,37 +61,146 @@ jobs:
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@main
with:
files_yaml: |
build_docs:
- '**'
- '!.devcontainer/**'
- '!.git-blame-ignore-revs'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/new-issues-to-triage-projects.yml'
- '!.github/workflows/pr_assign_author.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/release/update-version.sh'
- '!ci/test_notebooks.sh'
- '!ci/test_python*.sh'
- '!ci/test_wheel*.sh'
- '!codecov.yml'
test_cpp:
- '**'
- '!.devcontainer/**'
- '!.git-blame-ignore-revs'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/new-issues-to-triage-projects.yml'
- '!.github/workflows/pr_assign_author.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!BUILD.md'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_docs.sh'
- '!ci/build_python.sh'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/notebooks/**'
- '!ci/release/update-version.sh'
- '!ci/test_notebooks.sh'
- '!ci/test_python*.sh'
- '!ci/test_wheel*.sh'
- '!docs/**'
- '!img/**'
- '!notebooks/**'
- '!python/**'
- '!thirdparty/LICENSES/**'
- '!wiki/**'
test_notebooks:
- '**'
- '!.devcontainer/**'
- '!.git-blame-ignore-revs'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/new-issues-to-triage-projects.yml'
- '!.github/workflows/pr_assign_author.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!BUILD.md'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/check_style.sh'
- '!ci/release/update-version.sh'
- '!thirdparty/LICENSES/**'
test_python:
- '!wiki/**'
test_python_conda:
- '**'
- '!.devcontainer/**'
- '!.git-blame-ignore-revs'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/new-issues-to-triage-projects.yml'
- '!.github/workflows/pr_assign_author.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!BUILD.md'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
- '!ci/release/update-version.sh'
- '!ci/run_clang_tidy.sh'
- '!ci/run_ctests.sh'
- '!ci/test_wheel*.sh'
- '!ci/validate_wheel.sh'
- '!docs/**'
- '!img/**'
- '!notebooks/**'
- '!thirdparty/LICENSES/**'
- '!wiki/**'
test_python_wheels:
- '**'
- '!.devcontainer/**'
- '!.git-blame-ignore-revs'
- '!.github/CODEOWNERS'
- '!.github/ISSUE_TEMPLATE/**'
- '!.github/copy-pr-bot.yaml'
- '!.github/labeler.yml'
- '!.github/ops-bot.yaml'
- '!.github/release.yml'
- '!.github/workflows/new-issues-to-triage-projects.yml'
- '!.github/workflows/pr_assign_author.yml'
- '!.github/workflows/pr_issue_status_automation.yml'
- '!.github/workflows/trigger-breaking-change-alert.yaml'
- '!.pre-commit-config.yaml'
- '!BUILD.md'
- '!CONTRIBUTING.md'
- '!README.md'
- '!ci/build_cpp.sh'
- '!ci/build_python.sh'
- '!ci/check_style.sh'
- '!ci/notebooks/**'
- '!ci/release/update-version.sh'
- '!ci/run_clang_tidy.sh'
- '!ci/run_tests.sh'
- '!ci/test_cpp.sh'
- '!ci/test_notebooks.sh'
- '!ci/test_python*.sh'
- '!docs/**'
- '!img/**'
- '!notebooks/**'
- '!thirdparty/LICENSES/**'
- '!wiki/**'
checks:
secrets: inherit
needs: telemetry-setup
Expand Down Expand Up @@ -145,7 +254,7 @@ jobs:
needs: [conda-python-build, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
build_type: pull-request
script: "ci/test_python_singlegpu.sh"
Expand All @@ -154,7 +263,7 @@ jobs:
needs: [conda-python-build, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
# Select the amd64 entry with the highest CUDA and Python version
matrix_filter: map(select(.ARCH=="amd64")) | [max_by([.CUDA_VER,.PY_VER]|map(split(".")|map(tonumber)))]
Expand All @@ -165,7 +274,7 @@ jobs:
needs: [conda-python-build, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
build_type: pull-request
script: "ci/test_python_dask.sh"
Expand All @@ -174,7 +283,7 @@ jobs:
needs: [conda-python-build, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
build_type: pull-request
script: "ci/test_python_scikit_learn_tests.sh"
Expand All @@ -196,7 +305,7 @@ jobs:
needs: [conda-python-build, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
with:
build_type: pull-request
script: "ci/test_python_cuml_accel_upstream.sh"
Expand All @@ -215,9 +324,10 @@ jobs:
container_image: "rapidsai/ci-conda:26.04-latest"
script: "ci/test_notebooks.sh"
docs-build:
needs: conda-python-build
needs: [conda-python-build, 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"
Expand Down Expand Up @@ -255,7 +365,7 @@ jobs:
needs: [wheel-build-cuml, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels
with:
build_type: pull-request
script: ci/test_wheel.sh
Expand All @@ -264,7 +374,7 @@ jobs:
needs: [wheel-build-cuml, 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
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels
with:
build_type: pull-request
script: ci/test_wheel_dask.sh
Expand Down
10 changes: 8 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
# SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0

repos:
Expand Down Expand Up @@ -107,7 +107,7 @@ repos:
args: ['format', '--cleanup']
additional_dependencies: ['pyyaml>=6.0', 'packaging>=21.0']
- repo: https://github.com/rapidsai/pre-commit-hooks
rev: v1.1.0
rev: v1.3.3
hooks:
- id: verify-copyright
name: verify-copyright-cuml
Expand Down Expand Up @@ -164,6 +164,12 @@ repos:
- id: verify-alpha-spec
- id: verify-codeowners
args: [--fix, --project-prefix=cuml]
- id: verify-pyproject-license
# ignore the top-level pyproject.toml, which doesn't
# have or need a [project] table
exclude: |
(?x)
^pyproject[.]toml$
- repo: https://github.com/rapidsai/dependency-file-generator
rev: v1.20.0
hooks:
Expand Down
4 changes: 3 additions & 1 deletion ci/build_wheel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ package_dir=$2

source rapids-configure-sccache
source rapids-date-string
RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

export SCCACHE_S3_PREPROCESSOR_CACHE_KEY_PREFIX="${package_name}/${RAPIDS_CONDA_ARCH}/cuda${RAPIDS_CUDA_VERSION%%.*}/wheel/preprocessor-cache"
Expand All @@ -32,7 +34,7 @@ RAPIDS_PIP_WHEEL_ARGS=(
#
# Passing '--build-constraint' and '--no-build-isolation` together results in an error from 'pip',
# but we want to keep environment variable PIP_CONSTRAINT set unconditionally.
# PIP_NO_BUILD_ISOLATION=0 means "add --no-build-isolation" (ref: https://github.com/pypa/pip/issues/573
# PIP_NO_BUILD_ISOLATION=0 means "add --no-build-isolation" (ref: https://github.com/pypa/pip/issues/5735)
if [[ "${PIP_NO_BUILD_ISOLATION:-}" != "0" ]]; then
RAPIDS_PIP_WHEEL_ARGS+=(--build-constraint="${PIP_CONSTRAINT}")
fi
Expand Down
2 changes: 2 additions & 0 deletions ci/build_wheel_cuml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

set -euo pipefail

RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

package_name="cuml"
Expand Down
4 changes: 3 additions & 1 deletion ci/build_wheel_libcuml.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

package_name="libcuml"
Expand Down
4 changes: 3 additions & 1 deletion ci/test_wheel.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")"
Expand Down
4 changes: 3 additions & 1 deletion ci/test_wheel_dask.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")"
Expand Down
2 changes: 2 additions & 0 deletions ci/test_wheel_integrations.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

set -euo pipefail

RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX="true"
export RAPIDS_INIT_PIP_REMOVE_NVIDIA_INDEX
source rapids-init-pip

RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")"
Expand Down
26 changes: 24 additions & 2 deletions ci/validate_wheel.sh
Original file line number Diff line number Diff line change
@@ -1,18 +1,40 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

package_dir=$1
wheel_dir_relative_path=$2

RAPIDS_CUDA_MAJOR="${RAPIDS_CUDA_VERSION%%.*}"

cd "${package_dir}"

rapids-logger "validate packages with 'pydistcheck'"

PYDISTCHECK_ARGS=(
--inspect
)

# PyPI hard limit is 1GiB, but try to keep these as small as possible
if [[ "${package_dir}" == "python/libcuml" ]]; then
if [[ "${RAPIDS_CUDA_MAJOR}" == "12" ]]; then
PYDISTCHECK_ARGS+=(
--max-allowed-size-compressed '475Mi'
)
else
PYDISTCHECK_ARGS+=(
--max-allowed-size-compressed '275Mi'
)
fi
elif [[ "${package_dir}" != "python/cuml" ]]; then
rapids-echo-stderr "unrecognized package_dir: '${package_dir}'"
exit 1
fi

pydistcheck \
--inspect \
"${PYDISTCHECK_ARGS[@]}" \
"$(echo "${wheel_dir_relative_path}"/*.whl)"

rapids-logger "validate packages with 'twine'"
Expand Down
Loading