Add automatic sorting selection for COO input format in canonicalization #4224
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
| name: pr | ||
| on: | ||
| push: | ||
| branches: | ||
| - "pull-request/[0-9]+" | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
| permissions: {} | ||
| jobs: | ||
| pr-builder: | ||
| needs: | ||
| - check-lean-ci | ||
| - prevent-merge-with-lean-ci | ||
| - compute-matrix-filters | ||
| - changed-files | ||
| - checks | ||
| - conda-cpp-build | ||
| - conda-cpp-tests | ||
| - conda-python-build | ||
| - conda-python-tests | ||
| - docs-build | ||
| - wheel-build-libcuopt | ||
| - wheel-build-cuopt | ||
| - wheel-tests-cuopt | ||
| - wheel-build-cuopt-server | ||
| - wheel-tests-cuopt-server | ||
| - wheel-build-cuopt-sh-client | ||
| - test-self-hosted-server | ||
| permissions: | ||
| contents: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda-13.3.0 | ||
| if: always() | ||
| with: | ||
| needs: ${{ toJSON(needs) }} | ||
| check-lean-ci: | ||
| permissions: | ||
| contents: read | ||
| pull-requests: read | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| lean_ci_enabled: ${{ steps.check-label.outputs.lean_ci_enabled }} | ||
| steps: | ||
| - name: Check for lean-ci label | ||
| id: check-label | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| run: | | ||
| # Extract PR number from branch name (pull-request/123 -> 123) | ||
| PR_NUMBER=$(echo "$GITHUB_REF" | sed 's|refs/heads/pull-request/||') | ||
| echo "Checking PR #$PR_NUMBER for lean-ci label..." | ||
| # Check if the PR has the 'lean-ci' label | ||
| if gh pr view "$PR_NUMBER" --repo "${{ github.repository }}" --json labels --jq '.labels[].name' | grep -q "^lean-ci$"; then | ||
| echo "lean_ci_enabled=true" >> $GITHUB_OUTPUT | ||
| echo "⚠️ Lean CI is enabled (lean-ci label found)" | ||
| else | ||
| echo "lean_ci_enabled=false" >> $GITHUB_OUTPUT | ||
| echo "✅ Full CI is enabled" | ||
| fi | ||
| prevent-merge-with-lean-ci: | ||
| permissions: | ||
| contents: read | ||
| runs-on: ubuntu-latest | ||
| needs: check-lean-ci | ||
| steps: | ||
| - name: Check lean-ci status | ||
| env: | ||
| LEAN_CI: ${{ needs.check-lean-ci.outputs.lean_ci_enabled }} | ||
| run: | | ||
| if [ "$LEAN_CI" == "true" ]; then | ||
| echo "❌ ERROR: This PR has the 'lean-ci' label enabled." | ||
| echo "Lean CI is only for testing purposes and should not be merged." | ||
| echo "Please remove the 'lean-ci' label and run full CI before merging." | ||
| exit 1 | ||
| else | ||
| echo "✅ No lean-ci label found. PR can be merged." | ||
| exit 0 | ||
| fi | ||
| compute-matrix-filters: | ||
| needs: check-lean-ci | ||
| permissions: | ||
| contents: read | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| conda_lean_filter: ${{ steps.set-filters.outputs.conda_lean_filter }} | ||
| conda_test_filter: ${{ steps.set-filters.outputs.conda_test_filter }} | ||
| wheel_lean_filter: ${{ steps.set-filters.outputs.wheel_lean_filter }} | ||
| libcuopt_filter: ${{ steps.set-filters.outputs.libcuopt_filter }} | ||
| cuopt_server_filter: ${{ steps.set-filters.outputs.cuopt_server_filter }} | ||
| cuopt_sh_client_filter: ${{ steps.set-filters.outputs.cuopt_sh_client_filter }} | ||
| steps: | ||
| - name: Set matrix filters | ||
| id: set-filters | ||
| env: | ||
| LEAN_CI: ${{ needs.check-lean-ci.outputs.lean_ci_enabled }} | ||
| run: | | ||
| if [ "$LEAN_CI" == "true" ]; then | ||
| echo "conda_lean_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.11\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| echo "conda_test_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.13\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| echo "wheel_lean_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.12\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| echo "libcuopt_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.12\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| echo "cuopt_server_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.12\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| echo "cuopt_sh_client_filter=[map(select(.ARCH == \"amd64\" and .PY_VER == \"3.12\")) | max_by(.CUDA_VER | split(\".\") | map(tonumber))]" >> $GITHUB_OUTPUT | ||
| else | ||
| echo "conda_lean_filter=." >> $GITHUB_OUTPUT | ||
| echo "conda_test_filter=." >> $GITHUB_OUTPUT | ||
| echo "wheel_lean_filter=." >> $GITHUB_OUTPUT | ||
| echo "libcuopt_filter=group_by([.ARCH, (.CUDA_VER|split(\".\")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(\".\")|map(tonumber)))" >> $GITHUB_OUTPUT | ||
| echo "cuopt_server_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))]))" >> $GITHUB_OUTPUT | ||
| echo "cuopt_sh_client_filter=[map(select(.ARCH == \"amd64\")) | min_by((.PY_VER | split(\".\") | map(tonumber)), (.CUDA_VER | split(\".\") | map(-tonumber)))]" >> $GITHUB_OUTPUT | ||
| fi | ||
| changed-files: | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| packages: read | ||
| pull-requests: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuda-13.3.0 | ||
|
Check failure on line 128 in .github/workflows/pr.yaml
|
||
| with: | ||
| files_yaml: | | ||
| build_docs: | ||
| - '**' | ||
| - '!.ai/**' | ||
| - '!.clang-format' | ||
| - '!.coderabbit.yaml' | ||
| - '!.gitattributes' | ||
| - '!.github/.ai/**' | ||
| - '!.github/.coderabbit_review_guide.md' | ||
| - '!.github/CODEOWNERS' | ||
| - '!.github/CODE_OF_CONDUCT.md' | ||
| - '!.github/ISSUE_TEMPLATE/**' | ||
| - '!.github/PULL_REQUEST_TEMPLATE.md' | ||
| - '!.github/SECURITY.md' | ||
| - '!.github/agents/**' | ||
| - '!.github/copy-pr-bot.yaml' | ||
| - '!.github/ops-bot.yaml' | ||
| - '!.github/release.yml' | ||
| - '!.github/workflows/build.yaml' | ||
| - '!.github/workflows/build_images.yaml' | ||
| - '!.github/workflows/build_test_publish_images.yaml' | ||
| - '!.github/workflows/cloud_ci.yaml' | ||
| - '!.github/workflows/inactivity_reminder.yaml' | ||
| - '!.github/workflows/issue_automation.yaml' | ||
| - '!.github/workflows/nightly.yaml' | ||
| - '!.github/workflows/request-nvskills-ci.yml' | ||
| - '!.github/workflows/test.yaml' | ||
| - '!.github/workflows/test_images.yaml' | ||
| - '!.github/workflows/trigger-breaking-change-alert.yaml' | ||
| - '!.gitignore' | ||
| - '!.pre-commit-config.yaml' | ||
| - '!AGENTS.md' | ||
| - '!CHANGELOG.md' | ||
| - '!CONTRIBUTING.md' | ||
| - '!LICENSE' | ||
| - '!README.md' | ||
| - '!SECURITY.md' | ||
| - '!ci/build_wheel*.sh' | ||
| - '!ci/check_style.sh' | ||
| - '!ci/docker/**' | ||
| - '!ci/release/**' | ||
| - '!ci/run_*.pytests.sh' | ||
| - '!ci/run_ctests.sh' | ||
| - '!ci/test_cpp*.sh' | ||
| - '!ci/test_notebooks.sh' | ||
| - '!ci/test_python.sh' | ||
| - '!ci/test_self_hosted_service.sh' | ||
| - '!ci/test_wheel*.sh' | ||
| - '!ci/thirdparty-testing/**' | ||
| - '!container-builder/**' | ||
| - '!helmchart/**' | ||
| - '!ngc/**' | ||
| - '!sonar-project.properties' | ||
| - '!sonarqube/**' | ||
| - '!ucf/**' | ||
| - '!utilities/**' | ||
| test_cpp: | ||
| - '**' | ||
| - '!**/*.md' | ||
| - '!.ai/**' | ||
| - '!.clang-format' | ||
| - '!.claude-plugin/**' | ||
| - '!.coderabbit.yaml' | ||
| - '!.cursor-plugin/**' | ||
| - '!.gitattributes' | ||
| - '!.github/.ai/**' | ||
| - '!.github/.coderabbit_review_guide.md' | ||
| - '!.github/CODEOWNERS' | ||
| - '!.github/CODE_OF_CONDUCT.md' | ||
| - '!.github/ISSUE_TEMPLATE/**' | ||
| - '!.github/PULL_REQUEST_TEMPLATE.md' | ||
| - '!.github/SECURITY.md' | ||
| - '!.github/agents/**' | ||
| - '!.github/copy-pr-bot.yaml' | ||
| - '!.github/ops-bot.yaml' | ||
| - '!.github/release.yml' | ||
| - '!.github/workflows/build.yaml' | ||
| - '!.github/workflows/build_images.yaml' | ||
| - '!.github/workflows/build_test_publish_images.yaml' | ||
| - '!.github/workflows/cloud_ci.yaml' | ||
| - '!.github/workflows/inactivity_reminder.yaml' | ||
| - '!.github/workflows/issue_automation.yaml' | ||
| - '!.github/workflows/nightly.yaml' | ||
| - '!.github/workflows/request-nvskills-ci.yml' | ||
| - '!.github/workflows/test.yaml' | ||
| - '!.github/workflows/test_images.yaml' | ||
| - '!.github/workflows/trigger-breaking-change-alert.yaml' | ||
| - '!.gitignore' | ||
| - '!.pre-commit-config.yaml' | ||
| - '!AGENTS.md' | ||
| - '!CONTRIBUTING.md' | ||
| - '!LICENSE' | ||
| - '!README.md' | ||
| - '!SECURITY.md' | ||
| - '!agents/**' | ||
| - '!ci/build_docs.sh' | ||
| - '!ci/build_python.sh' | ||
| - '!ci/build_wheel*.sh' | ||
| - '!ci/check_style.sh' | ||
| - '!ci/docker/**' | ||
| - '!ci/release/**' | ||
| - '!ci/test_python.sh' | ||
| - '!ci/test_self_hosted_service.sh' | ||
| - '!ci/test_wheel*.sh' | ||
| - '!ci/thirdparty-testing/**' | ||
| - '!ci/utils/sync_skills_version.sh' | ||
| - '!ci/utils/validate_skills.sh' | ||
| - '!container-builder/**' | ||
| - '!docs/**' | ||
| - '!gemini-extension.json' | ||
| - '!helmchart/**' | ||
| - '!img/**' | ||
| - '!ngc/**' | ||
| - '!notebooks/**' | ||
| - '!python/**' | ||
| - '!skills/**/SKILL.md' | ||
| - '!skills/**/skill-card.md' | ||
| - '!skills/**/skill.oms.sig' | ||
| - '!skills/**/evals/**' | ||
| - '!skills/**/benchmark/**' | ||
| - '!skills/**/references/**' | ||
| - '!sonar-project.properties' | ||
| - '!sonarqube/**' | ||
| - '!ucf/**' | ||
| - '!utilities/**' | ||
| test_python_conda: | ||
| - '**' | ||
| - '!**/*.md' | ||
| - '!.ai/**' | ||
| - '!.clang-format' | ||
| - '!.claude-plugin/**' | ||
| - '!.coderabbit.yaml' | ||
| - '!.cursor-plugin/**' | ||
| - '!.gitattributes' | ||
| - '!.github/.ai/**' | ||
| - '!.github/.coderabbit_review_guide.md' | ||
| - '!.github/CODEOWNERS' | ||
| - '!.github/CODE_OF_CONDUCT.md' | ||
| - '!.github/ISSUE_TEMPLATE/**' | ||
| - '!.github/PULL_REQUEST_TEMPLATE.md' | ||
| - '!.github/SECURITY.md' | ||
| - '!.github/agents/**' | ||
| - '!.github/copy-pr-bot.yaml' | ||
| - '!.github/ops-bot.yaml' | ||
| - '!.github/release.yml' | ||
| - '!.github/workflows/build.yaml' | ||
| - '!.github/workflows/build_images.yaml' | ||
| - '!.github/workflows/build_test_publish_images.yaml' | ||
| - '!.github/workflows/cloud_ci.yaml' | ||
| - '!.github/workflows/inactivity_reminder.yaml' | ||
| - '!.github/workflows/issue_automation.yaml' | ||
| - '!.github/workflows/nightly.yaml' | ||
| - '!.github/workflows/request-nvskills-ci.yml' | ||
| - '!.github/workflows/test.yaml' | ||
| - '!.github/workflows/test_images.yaml' | ||
| - '!.github/workflows/trigger-breaking-change-alert.yaml' | ||
| - '!.gitignore' | ||
| - '!.pre-commit-config.yaml' | ||
| - '!AGENTS.md' | ||
| - '!CONTRIBUTING.md' | ||
| - '!LICENSE' | ||
| - '!README.md' | ||
| - '!SECURITY.md' | ||
| - '!agents/**' | ||
| - '!ci/build_docs.sh' | ||
| - '!ci/build_wheel*.sh' | ||
| - '!ci/check_style.sh' | ||
| - '!ci/docker/**' | ||
| - '!ci/release/**' | ||
| - '!ci/test_self_hosted_service.sh' | ||
| - '!ci/test_wheel*.sh' | ||
| - '!ci/thirdparty-testing/**' | ||
| - '!ci/utils/sync_skills_version.sh' | ||
| - '!ci/utils/validate_skills.sh' | ||
| - '!container-builder/**' | ||
| - '!docs/**' | ||
| - '!gemini-extension.json' | ||
| - '!helmchart/**' | ||
| - '!img/**' | ||
| - '!ngc/**' | ||
| - '!notebooks/**' | ||
| - '!skills/**/SKILL.md' | ||
| - '!skills/**/skill-card.md' | ||
| - '!skills/**/skill.oms.sig' | ||
| - '!skills/**/evals/**' | ||
| - '!skills/**/benchmark/**' | ||
| - '!skills/**/references/**' | ||
| - '!sonar-project.properties' | ||
| - '!sonarqube/**' | ||
| - '!ucf/**' | ||
| - '!utilities/**' | ||
| test_python_wheels: | ||
| - '**' | ||
| - '!**/*.md' | ||
| - '!.ai/**' | ||
| - '!.clang-format' | ||
| - '!.claude-plugin/**' | ||
| - '!.coderabbit.yaml' | ||
| - '!.cursor-plugin/**' | ||
| - '!.gitattributes' | ||
| - '!.github/.ai/**' | ||
| - '!.github/.coderabbit_review_guide.md' | ||
| - '!.github/CODEOWNERS' | ||
| - '!.github/CODE_OF_CONDUCT.md' | ||
| - '!.github/ISSUE_TEMPLATE/**' | ||
| - '!.github/PULL_REQUEST_TEMPLATE.md' | ||
| - '!.github/SECURITY.md' | ||
| - '!.github/agents/**' | ||
| - '!.github/copy-pr-bot.yaml' | ||
| - '!.github/ops-bot.yaml' | ||
| - '!.github/release.yml' | ||
| - '!.github/workflows/build.yaml' | ||
| - '!.github/workflows/build_images.yaml' | ||
| - '!.github/workflows/build_test_publish_images.yaml' | ||
| - '!.github/workflows/cloud_ci.yaml' | ||
| - '!.github/workflows/inactivity_reminder.yaml' | ||
| - '!.github/workflows/issue_automation.yaml' | ||
| - '!.github/workflows/nightly.yaml' | ||
| - '!.github/workflows/request-nvskills-ci.yml' | ||
| - '!.github/workflows/test.yaml' | ||
| - '!.github/workflows/test_images.yaml' | ||
| - '!.github/workflows/trigger-breaking-change-alert.yaml' | ||
| - '!.gitignore' | ||
| - '!.pre-commit-config.yaml' | ||
| - '!AGENTS.md' | ||
| - '!CONTRIBUTING.md' | ||
| - '!LICENSE' | ||
| - '!README.md' | ||
| - '!SECURITY.md' | ||
| - '!agents/**' | ||
| - '!ci/build_cpp.sh' | ||
| - '!ci/build_docs.sh' | ||
| - '!ci/build_python.sh' | ||
| - '!ci/check_style.sh' | ||
| - '!ci/docker/**' | ||
| - '!ci/release/**' | ||
| - '!ci/run_ctests.sh' | ||
| - '!ci/test_python.sh' | ||
| - '!ci/thirdparty-testing/**' | ||
| - '!ci/utils/sync_skills_version.sh' | ||
| - '!ci/utils/validate_skills.sh' | ||
| - '!conda/**' | ||
| - '!container-builder/**' | ||
| - '!gemini-extension.json' | ||
| - '!helmchart/**' | ||
| - '!img/**' | ||
| - '!ngc/**' | ||
| - '!notebooks/**' | ||
| - '!skills/**/SKILL.md' | ||
| - '!skills/**/skill-card.md' | ||
| - '!skills/**/skill.oms.sig' | ||
| - '!skills/**/evals/**' | ||
| - '!skills/**/benchmark/**' | ||
| - '!skills/**/references/**' | ||
| - '!sonar-project.properties' | ||
| - '!sonarqube/**' | ||
| - '!ucf/**' | ||
| - '!utilities/**' | ||
| checks: | ||
| permissions: | ||
| contents: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda-13.3.0 | ||
| with: | ||
| enable_check_generated_files: false | ||
| conda-cpp-build: | ||
| needs: [checks, compute-matrix-filters, changed-files] | ||
| # Consumed by conda-cpp-tests, conda-python-build, and (transitively) docs-build. | ||
| if: >- | ||
| fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp || | ||
| fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda || | ||
| fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-13.3.0 | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/build_cpp.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_lean_filter }} | ||
| conda-cpp-tests: | ||
| needs: [conda-cpp-build, changed-files, compute-matrix-filters] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-13.3.0 | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/test_cpp.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_test_filter }} | ||
| secrets: | ||
| script-env-secret-1-key: CUOPT_S3_URI | ||
| script-env-secret-1-value: ${{ secrets.CUOPT_S3_URI }} | ||
| script-env-secret-2-key: CUOPT_AWS_ACCESS_KEY_ID | ||
| script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} | ||
| script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY | ||
| script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} | ||
| conda-python-build: | ||
| needs: [conda-cpp-build, compute-matrix-filters, changed-files] | ||
| # Consumed by conda-python-tests and docs-build. | ||
| if: >- | ||
| fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda || | ||
| fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-13.3.0 | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/build_python.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_test_filter }} | ||
| conda-python-tests: | ||
| needs: [conda-python-build, changed-files, compute-matrix-filters] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-13.3.0 | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda | ||
| with: | ||
| run_codecov: false | ||
| build_type: pull-request | ||
| script: ci/test_python.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_test_filter }} | ||
| secrets: | ||
| script-env-secret-1-key: CUOPT_S3_URI | ||
| script-env-secret-1-value: ${{ secrets.CUOPT_S3_URI }} | ||
| script-env-secret-2-key: CUOPT_AWS_ACCESS_KEY_ID | ||
| script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} | ||
| script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY | ||
| script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} | ||
| docs-build: | ||
| needs: [conda-python-build, changed-files] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-13.3.0 | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs | ||
| with: | ||
| build_type: pull-request | ||
| node_type: "gpu-l4-latest-1" | ||
| arch: "amd64" | ||
| file_to_upload: "docs/cuopt/build/html/" | ||
| artifact-name: "cuopt_docs" | ||
| container_image: "rapidsai/ci-conda:26.08-latest" | ||
| script: "ci/build_docs.sh" | ||
| wheel-build-libcuopt: | ||
| needs: [compute-matrix-filters, changed-files] | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.3.0 | ||
| with: | ||
| # build for every combination of arch and CUDA version, but only for the latest Python | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_filter }} | ||
| package-type: cpp | ||
| package-name: libcuopt | ||
| build_type: pull-request | ||
| script: ci/build_wheel_libcuopt.sh | ||
| wheel-build-cuopt: | ||
| needs: [wheel-build-libcuopt, compute-matrix-filters, changed-files] | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.3.0 | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/build_wheel_cuopt.sh | ||
| package-name: cuopt | ||
| package-type: python | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.wheel_lean_filter }} | ||
| wheel-tests-cuopt: | ||
| needs: [wheel-build-cuopt, wheel-build-cuopt-sh-client, changed-files, compute-matrix-filters] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.3.0 | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/test_wheel_cuopt.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.wheel_lean_filter }} | ||
| secrets: | ||
| script-env-secret-1-key: CUOPT_S3_URI | ||
| script-env-secret-1-value: ${{ secrets.CUOPT_S3_URI }} | ||
| script-env-secret-2-key: CUOPT_AWS_ACCESS_KEY_ID | ||
| script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} | ||
| script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY | ||
| script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} | ||
| wheel-build-cuopt-server: | ||
| needs: [checks, compute-matrix-filters, changed-files] | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.3.0 | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/build_wheel_cuopt_server.sh | ||
| package-name: cuopt_server | ||
| package-type: python | ||
| pure-wheel: true | ||
| # Only need 1 package per CUDA major version. This selects "ARCH=amd64 + the latest supported Python, 1 job per major CUDA version". | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.cuopt_server_filter }} | ||
| wheel-build-cuopt-sh-client: | ||
| needs: [compute-matrix-filters, changed-files] | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.3.0 | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/build_wheel_cuopt_sh_client.sh | ||
| package-name: cuopt_sh_client | ||
| package-type: python | ||
| append-cuda-suffix: false | ||
| pure-wheel: true | ||
| # only need 1 build (noarch package): this selects amd64, oldest-supported Python, latest-supported CUDA | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.cuopt_sh_client_filter }} | ||
| wheel-tests-cuopt-server: | ||
| needs: [wheel-build-cuopt, wheel-build-cuopt-server, changed-files, compute-matrix-filters] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.3.0 | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/test_wheel_cuopt_server.sh | ||
| matrix_filter: ${{ needs.compute-matrix-filters.outputs.wheel_lean_filter }} | ||
| secrets: | ||
| script-env-secret-1-key: CUOPT_S3_URI | ||
| script-env-secret-1-value: ${{ secrets.CUOPT_S3_URI }} | ||
| script-env-secret-2-key: CUOPT_AWS_ACCESS_KEY_ID | ||
| script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} | ||
| script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY | ||
| script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} | ||
| test-self-hosted-server: | ||
| needs: [wheel-build-cuopt, wheel-build-cuopt-server, changed-files] | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| id-token: write | ||
| packages: read | ||
| pull-requests: read | ||
| secrets: inherit # zizmor: ignore[secrets-inherit] | ||
| uses: ./.github/workflows/self_hosted_service_test.yaml | ||
| if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels | ||
| with: | ||
| build_type: pull-request | ||
| script: ci/test_self_hosted_service.sh | ||