From 635221de7857741fb90299dc5d5c6bf30772932b Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Thu, 27 Feb 2025 15:01:45 -0500 Subject: [PATCH 01/72] Add GitHub workflow for RAPIDS high-level project tracking --- .../workflows/project-high-level-tracker.yaml | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 .github/workflows/project-high-level-tracker.yaml diff --git a/.github/workflows/project-high-level-tracker.yaml b/.github/workflows/project-high-level-tracker.yaml new file mode 100644 index 00000000..4540f132 --- /dev/null +++ b/.github/workflows/project-high-level-tracker.yaml @@ -0,0 +1,268 @@ +name: RAPIDS High Level Tracking + +on: + workflow_call: + inputs: + PROJECT_ID: + description: "Project ID" + default: "PVT_kwDOAp2shc4ArK9w" + type: string + + # ------------- Field IDs ------------- + WEEK_FIELD_ID: + description: "Week Field ID" + default: "PVTIF_lADOAp2shc4ArK9wzgiTHg8" + type: string + RELEASE_FIELD_ID: + description: "Release Field ID" + default: "PVTF_lADOAp2shc4ArK9wzgpEYKw" + type: string + STAGE_FIELD_ID: + description: "Stage Field ID" + default: "PVTSSF_lADOAp2shc4ArK9wzgiTH8g" + type: string + START_DATE_FIELD_ID: + description: "Start Date Field ID" + default: "PVTF_lADOAp2shc4ArK9wzgiTHmQ" + type: string + END_DATE_FIELD_ID: + description: "End Date Field ID" + default: "PVTF_lADOAp2shc4ArK9wzgiTHmU" + type: string + + # ------------- Option IDs ------------- + # Stage options + STAGE_PLANNED_ID: + description: "📓 Planned option ID" + default: "📓 Planned" + type: string + STAGE_DEVELOPMENT_ID: + description: "💻 Development option ID" + default: "💻 Development" + type: string + STAGE_BURNDOWN_ID: + description: "🔥 Burndown option ID" + default: "🔥 Burndown" + type: string + STAGE_CODE_FREEZE_ID: + description: "❄ Code Freeze option ID" + default: "❄ Code Freeze" + type: string + STAGE_HOTFIX_ID: + description: "🩹 Hotfix option ID" + default: "🩹 Hotfix" + type: string + + secrets: + ADD_TO_PROJECT_GITHUB_TOKEN: + description: "Project Access Token" + required: true + +jobs: + process-branch-name: + runs-on: ubuntu-latest + outputs: + release: ${{ steps.process-branch-name.outputs.branch-name }} + steps: + - name: Extract branch name + id: process-branch-name + run: | + branch=${{ github.event.pull_request.base.ref }} + release=${branch#branch-} + echo "release=$release" >> "$GITHUB_OUTPUT" + + get-stage-field: + runs-on: ubuntu-latest + outputs: + stage-id: ${{ steps.get-stage-field.outputs.stage-id }} + needs: + - process-branch-name + steps: + # Add cache step for releases.json + # Pinned to the 4.2 commit SHA + - name: Cache releases.json + id: cache-releases + uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 + with: + path: /tmp/releases.json + # Cache key based on date - refresh daily to ensure we get updates + key: ${{ runner.os }}-releases-json-${{ github.run_id }}-${{ github.run_number }} + restore-keys: | + ${{ runner.os }}-releases-json- + + - name: Get stage field ID + id: get-stage-field + run: | + # Use the "nightly" info from this JSON: + # https://raw.githubusercontent.com/rapidsai/docs/refs/heads/main/_data/releases.json + # to determine the stage for the new release + + # Check if cache exists, download only if needed + if [ ! -f "/tmp/releases.json" ] || [ "$(find /tmp/releases.json -mtime +1 -print)" ]; then + echo "Cache miss or expired. Downloading releases.json..." + curl -s https://raw.githubusercontent.com/rapidsai/docs/main/_data/releases.json -o /tmp/releases.json + + # Validate the downloaded JSON + if ! jq empty /tmp/releases.json 2>/dev/null; then + echo "Error: Downloaded file is not valid JSON" + rm -f /tmp/releases.json + exit 1 + fi + else + echo "Using cached releases.json" + fi + + # Use the cached file + RELEASES_JSON=$(cat /tmp/releases.json) + + # Extract current repo name from GitHub context + REPO_NAME=$(echo "$GITHUB_REPOSITORY" | cut -d '/' -f 2) + echo "Repository: \"$REPO_NAME\"" + + # Check if repo is in cudf_dev group + CUDF_DEV_REPOS=("cuDF" "RMM" "rapids-cmake" "raft" "dask-cuda" "ucx-py") + IS_CUDF_DEV="false" + for repo in "${CUDF_DEV_REPOS[@]}"; do + if [[ "$REPO_NAME" == "$repo" ]]; then + IS_CUDF_DEV="true" + break + fi + done + echo "Is cudf_dev group: \"$IS_CUDF_DEV\"" + + # Get the release from branch name + RELEASE="${{ needs.process-branch-name.outputs.release }}" + echo "Release: $RELEASE" + + # Get current date in YYYY-MM-DD format + CURRENT_DATE=$(date +%Y-%m-%d) + echo "Current date: $CURRENT_DATE" + + # Extract dates from the releases.json for the current release + if [[ "$IS_CUDF_DEV" == "true" ]]; then + PLANNING_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].cudf_dev.planning.start') + DEV_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].cudf_dev.development.start') + BURNDOWN_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].cudf_dev.burndown.start') + FREEZE_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].cudf_dev.freeze.start') + RELEASE_DATE=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].date') + else + PLANNING_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].planning.start') + DEV_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].development.start') + BURNDOWN_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].burndown.start') + FREEZE_START=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].freeze.start') + RELEASE_DATE=$(echo "$RELEASES_JSON" | jq -r --arg rel "$RELEASE" '.[$rel].date') + fi + + echo "Planning start: $PLANNING_START" + echo "Development start: $DEV_START" + echo "Burndown start: $BURNDOWN_START" + echo "Freeze start: $FREEZE_START" + echo "Release date: $RELEASE_DATE" + + # Determine stage based on current date + STAGE_ID="${{ inputs.STAGE_PLANNED_ID }}" + + if [[ "$CURRENT_DATE" < "$DEV_START" ]]; then + STAGE_ID="${{ inputs.STAGE_PLANNED_ID }}" + echo "Stage: Planned" + elif [[ "$CURRENT_DATE" < "$BURNDOWN_START" ]]; then + STAGE_ID="${{ inputs.STAGE_DEVELOPMENT_ID }}" + echo "Stage: Development" + elif [[ "$CURRENT_DATE" < "$FREEZE_START" ]]; then + STAGE_ID="${{ inputs.STAGE_BURNDOWN_ID }}" + echo "Stage: Burndown" + elif [[ "$CURRENT_DATE" < "$RELEASE_DATE" ]]; then + STAGE_ID="${{ inputs.STAGE_CODE_FREEZE_ID }}" + echo "Stage: Code Freeze" + else + STAGE_ID="${{ inputs.STAGE_HOTFIX_ID }}" + echo "Stage: Hotfix" + fi + + # Set output + echo "stage-id=$STAGE_ID" >> "$GITHUB_OUTPUT" + + get-project-id: + uses: ./.github/workflows/project-get-item-id.yaml + secrets: inherit + permissions: + contents: read + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + + update-release-field: + uses: ./.github/workflows/project-set-text-date-numeric-field.yaml + needs: + - get-project-id + - process-branch-name + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + FIELD_ID: ${{ inputs.RELEASE_FIELD_ID }} + FIELD_TYPE: text + SET_VALUE: ${{ needs.process-branch-name.outputs.release }} + ITEM_PROJECT_ID: "${{ needs.get-project-id.outputs.ITEM_PROJECT_ID }}" + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + UPDATE_LINKED_ISSUES: true + secrets: inherit + + update-stage-field: + uses: ./.github/workflows/project-get-set-single-select-field.yaml + needs: + - get-project-id + - process-branch-name + - get-stage-field + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + SINGLE_SELECT_FIELD_ID: ${{ inputs.STAGE_FIELD_ID }} + SINGLE_SELECT_FIELD_NAME: "Stage" + SINGLE_SELECT_OPTION_VALUE: ${{ needs.get-stage-field.outputs.stage-id }} + ITEM_PROJECT_ID: "${{ needs.get-project-id.outputs.ITEM_PROJECT_ID }}" + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + UPDATE_ITEM: true + UPDATE_LINKED_ISSUES: true + secrets: inherit + + set-opened-date-field: + uses: ./.github/workflows/project-set-text-date-numeric-field.yaml + if: github.event.action == 'opened' + needs: + - get-project-id + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + FIELD_ID: ${{ inputs.START_DATE_FIELD_ID }} + FIELD_TYPE: date + SET_VALUE: ${{ github.event.pull_request.created_at }} + ITEM_PROJECT_ID: "${{ needs.get-project-id.outputs.ITEM_PROJECT_ID }}" + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + UPDATE_LINKED_ISSUES: true + secrets: inherit + + set-closed-date-field: + uses: ./.github/workflows/project-set-text-date-numeric-field.yaml + if: github.event.action == 'closed' + needs: + - get-project-id + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + FIELD_ID: ${{ inputs.END_DATE_FIELD_ID }} + FIELD_TYPE: date + SET_VALUE: ${{ github.event.pull_request.closed_at }} + ITEM_PROJECT_ID: "${{ needs.get-project-id.outputs.ITEM_PROJECT_ID }}" + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + UPDATE_LINKED_ISSUES: true + secrets: inherit + + update-week-field: + uses: ./.github/workflows/project-get-set-iteration-field.yaml + needs: + - get-project-id + with: + PROJECT_ID: ${{ inputs.PROJECT_ID }} + ITERATION_FIELD_ID: ${{ inputs.WEEK_FIELD_ID }} + ITERATION_FIELD_NAME: "Week" + ITEM_PROJECT_ID: "${{ needs.get-project-id.outputs.ITEM_PROJECT_ID }}" + ITEM_NODE_ID: "${{ github.event.pull_request.node_id }}" + UPDATE_ITEM: true + UPDATE_LINKED_ISSUES: true + secrets: inherit From 6b33ff78a83aca1267aa1a0bfecf7e7ee8536e86 Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Fri, 28 Feb 2025 12:57:37 -0500 Subject: [PATCH 02/72] Add project automation documentation and GraphQL helper script --- .../workflows/project-high-level-tracker.yaml | 4 +- docs/project-automation-readme.md | 163 ++++++++++++++++++ docs/project-graphql-helper.py | 110 ++++++++++++ 3 files changed, 275 insertions(+), 2 deletions(-) create mode 100644 docs/project-automation-readme.md create mode 100644 docs/project-graphql-helper.py diff --git a/.github/workflows/project-high-level-tracker.yaml b/.github/workflows/project-high-level-tracker.yaml index 4540f132..29a0572f 100644 --- a/.github/workflows/project-high-level-tracker.yaml +++ b/.github/workflows/project-high-level-tracker.yaml @@ -225,7 +225,7 @@ jobs: set-opened-date-field: uses: ./.github/workflows/project-set-text-date-numeric-field.yaml - if: github.event.action == 'opened' + if: github.event.action == 'opened' || github.event.action == 'workflow_dispatch' needs: - get-project-id with: @@ -240,7 +240,7 @@ jobs: set-closed-date-field: uses: ./.github/workflows/project-set-text-date-numeric-field.yaml - if: github.event.action == 'closed' + if: github.event.action == 'closed' || github.event.action == 'workflow_dispatch' needs: - get-project-id with: diff --git a/docs/project-automation-readme.md b/docs/project-automation-readme.md new file mode 100644 index 00000000..2b317f4a --- /dev/null +++ b/docs/project-automation-readme.md @@ -0,0 +1,163 @@ +# RAPIDS Project Automation + +## Overview + +This collection of GitHub Actions workflows supports automation of the management of GitHub Projects, helping track development progress across RAPIDS repositories. + +The automations can also synchronize fields from PR to Issue such as the statuses, release information, and development stages into project fields, making project management effortless and consistent. + +## 🔍 The Challenge + +GitHub Projects are powerful, but automating them is not straightforward: + +- Each item has a **project-specific ID** that's different from its global node ID +- Different field types (text, date, single-select, iteration) require different GraphQL mutations +- Linking PRs to issues and keeping them in sync requires complex operations + - Work often begins in an Issue, but then is completed in the PR, requiring this synchronization + +## 🧩 Workflow Architecture + +By centralizing this logic in reusable workflows, all RAPIDS repositories maintain consistent project tracking without duplicating code. + +Using the high-level tracker as an example, the automation is built as a set of reusable workflows that handle different aspects of project management (:recycle: denotes a shared workflow): + +```mermaid +graph TD + A[PR Event] --> B[project-high-level-tracker :recycle:] + B --> C[process-branch-name] + B --> D[get-stage-field] + B --> E[get-project-id :recycle:] + D --> F[update-stage-field :recycle:] + C --> G[update-release-field :recycle:] + E --> G + E --> F + E --> H[update-week-field :recycle:] + E --> I[set-opened-date-field :recycle:] + E --> J[set-closed-date-field :recycle:] + F --> K[update-linked-issues :recycle:] + G --> K + H --> K + I --> K + J --> K +``` + +## 📁 Workflows + +### Core Workflows + +1. **project-get-item-id.yaml** + Gets the project-specific ID for an item (PR or issue) within a project - a critical first step for all operations. + +2. **project-set-text-date-numeric-field.yaml** + Updates text, date, or numeric fields in the project. + +3. **project-get-set-single-select-field.yaml** + Handles single-select (dropdown) fields like Status, Stage, etc. + +4. **project-get-set-iteration-field.yaml** + Manages iteration fields for sprint/week tracking. + +### Support Workflows + +5. **project-update-linked-issues.yaml** + Synchronizes linked issues with the PR's field values.
+ Unfortunately, we cannot go from Issue -> PR; the linkage exists only within the PR's API. + +6. **project-high-level-tracker.yaml** + The main entry point that orchestrates RAPIDS high-level project tracking, handling PR events and updating project fields based on release schedules. + +## 📋 Configuration + +### Project Field IDs + +The workflows require GraphQL node IDs for the project and its fields. These are provided as inputs: + +```yaml +inputs: + PROJECT_ID: + description: "Project ID" + default: "PVT_placeholder" # PVT = projectV2 + WEEK_FIELD_ID: + description: "Week Field ID" + default: "PVTIF_placeholder" + # ... other field IDs +``` + +### Getting Project and Field IDs + +To gather the required GraphQL node IDs for your project setup, use the included helper script: + +```bash +python docs/project-graphql-helper.py --token YOUR_GITHUB_TOKEN --org PROJECT_ORG_NAME --project PROJECT_NUMBER +``` + +Using the cuDF project https://github.com/orgs/rapidsai/projects/128: +```bash +python docs/project-graphql-helper.py -t ghp_placeholder -o rapidsai -p 128 +``` + +The script will output: +1. The Project ID (starts with `PVT_`) - use this for the `PROJECT_ID` input +2. A dictionary of all fields in the project with their IDs and metadata: + - Regular fields (text, date, etc.) `PVTF_...` + - Single-select fields include their options with option IDs `PVTSSF_...` + - Iteration fields include configuration details `PVTIF_...` + +Example output: +``` +PVT_kwDOAp2shc4AiNzl + +'Release': {'id': 'PVTSSF_lADOAp2shc4AiNzlzgg52UQ', + 'name': 'Release', + 'options': {'24.12': '582d2086', + '25.02': 'ee3d53a3', + '25.04': '0e757f49', + 'Backlog': 'be6006c4'}}, + 'Status': {'id': 'PVTSSF_lADOAp2shc4AiNzlzgaxNac', + 'name': 'Status', + 'options': {'Blocked': 'b0c2860f', + 'Done': '98236657', + 'In Progress': '47fc9ee4', + 'Todo': '1ba1e8b7'}}, +``` + +Use these IDs to populate the workflow input variables in your caller workflow. + +## 📊 Use Cases + +### Tracking PR Progress + +The workflow automatically tracks where a PR is in the development lifecycle: + +1. When a PR is opened against a release branch, it's tagged with the release +2. The stage is updated based on the current date relative to release milestones +3. Week iteration fields are updated to show current sprint +4. All linked issues inherit these values + +## 🚀 How The High-Level Tracker Works + +***Prerequisites*** +Set up a caller workflow that runs `project-high-level-tracker.yaml` on PR events in your repository. +Ensure your project is set up to auto-add PRs to the project when they are opened. + +1. When a PR is opened, updated, or closed, the workflow: + - Extracts the release from the branch name + - Determines the current development stage based on release timelines + - Updates fields in the project + - Synchronizes all linked issues + +2. The workflow uses a cached `releases.json` file to determine the current stage: + - Planning + - Development + - Burndown + - Code Freeze + - Hotfix + +## 📚 Related Resources + +- [GitHub GraphQL API Documentation](https://docs.github.com/en/graphql) +- [GitHub Projects API](https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects) + +--- + +> [!NOTE] These workflows are designed for the RAPIDS ecosystem but can be adapted for any organization using GitHub Projects for development tracking. diff --git a/docs/project-graphql-helper.py b/docs/project-graphql-helper.py new file mode 100644 index 00000000..85221b33 --- /dev/null +++ b/docs/project-graphql-helper.py @@ -0,0 +1,110 @@ +# Setting up imports and Globals +import requests +import json +import argparse +from pprint import pprint + +# Building helper functions +def get_project_info(org, project_number, token): + headers = {"Authorization": f"Bearer {token}"} + + query = ''' + query($org: String!, $number: Int!) { + organization(login: $org){ + projectV2(number: $number) { + id + } + } + } + ''' + + variables = { + "org": org, + "number": int(project_number), + } + + data = { + "query": query, + "variables": variables, + } + + response = requests.post("https://api.github.com/graphql", headers=headers, json=data) + response_json = json.loads(response.text) + + project_id = response_json['data']['organization']['projectV2']['id'] + + query = ''' + query($node: ID!){ + node(id: $node) { + ... on ProjectV2 { + fields(first: 20) { + nodes { + ... on ProjectV2Field { + id + name + } + ... on ProjectV2IterationField { + id + name + configuration { + iterations { + startDate + id + } + } + } + ... on ProjectV2SingleSelectField { + id + name + options { + id + name + } + } + } + } + } + } + } + ''' + + variables = { + "node": project_id, + } + + data = { + "query": query, + "variables": variables, + } + + fields_response = requests.post("https://api.github.com/graphql", headers=headers, json=data) + fields_response_json = json.loads(fields_response.text) + + not_project_fields = ['Title', 'Assignees', 'Labels', 'Linked pull requests', 'Reviewers', 'Repository', 'Milestone', 'Tracks'] + field_names = [{'name': field['name'], 'id': field['id']} for field in fields_response_json['data']['node']['fields']['nodes'] if field['name'] not in not_project_fields] + fields = {field['name']:field for field in fields_response_json['data']['node']['fields']['nodes'] if field['name'] not in not_project_fields} + + for field in fields.values(): + if 'options' in field.keys(): + field['options'] = {option['name']: option['id'] for option in field['options']} + + return project_id, fields + +def main(): + # Set up argument parser + parser = argparse.ArgumentParser(description='GitHub Project GraphQL Helper') + parser.add_argument('--token', '-t', required=True, help='GitHub personal access token') + parser.add_argument('--org', '-o', required=True, help='GitHub organization name') + parser.add_argument('--project', '-p', required=True, type=int, help='GitHub project number') + + args = parser.parse_args() + + # Use the provided arguments + project_id, fields = get_project_info(org=args.org, project_number=args.project, token=args.token) + + pprint(project_id) + pprint(fields) + +if __name__ == "__main__": + main() + From 89ce39328ea95d9e0d39bcbefd571d04ced29e40 Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Fri, 28 Feb 2025 12:59:55 -0500 Subject: [PATCH 03/72] Update project automation documentation with improved diagram --- docs/project-automation-readme.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/project-automation-readme.md b/docs/project-automation-readme.md index 2b317f4a..7171d13d 100644 --- a/docs/project-automation-readme.md +++ b/docs/project-automation-readme.md @@ -19,22 +19,22 @@ GitHub Projects are powerful, but automating them is not straightforward: By centralizing this logic in reusable workflows, all RAPIDS repositories maintain consistent project tracking without duplicating code. -Using the high-level tracker as an example, the automation is built as a set of reusable workflows that handle different aspects of project management (:recycle: denotes a shared workflow): +Using the high-level tracker as an example, the automation is built as a set of reusable workflows that handle different aspects of project management (♻️ denotes a shared workflow): ```mermaid -graph TD - A[PR Event] --> B[project-high-level-tracker :recycle:] +flowchart TD + A[PR Event] --> B[project-high-level-tracker ♻️] B --> C[process-branch-name] B --> D[get-stage-field] - B --> E[get-project-id :recycle:] - D --> F[update-stage-field :recycle:] - C --> G[update-release-field :recycle:] + B --> E[get-project-id ♻️] + D --> F[update-stage-field ♻️] + C --> G[update-release-field ♻️] E --> G E --> F - E --> H[update-week-field :recycle:] - E --> I[set-opened-date-field :recycle:] - E --> J[set-closed-date-field :recycle:] - F --> K[update-linked-issues :recycle:] + E --> H[update-week-field ♻️] + E --> I[set-opened-date-field ♻️] + E --> J[set-closed-date-field ♻️] + F --> K[update-linked-issues ♻️] G --> K H --> K I --> K From 48c4c3fd2a2300fc4741b43dab112fa08070339d Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Fri, 28 Feb 2025 13:31:57 -0500 Subject: [PATCH 04/72] Update mermaid to LR from TD --- docs/project-automation-readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/project-automation-readme.md b/docs/project-automation-readme.md index 7171d13d..6db3c2f0 100644 --- a/docs/project-automation-readme.md +++ b/docs/project-automation-readme.md @@ -22,7 +22,7 @@ By centralizing this logic in reusable workflows, all RAPIDS repositories mainta Using the high-level tracker as an example, the automation is built as a set of reusable workflows that handle different aspects of project management (♻️ denotes a shared workflow): ```mermaid -flowchart TD +flowchart LR A[PR Event] --> B[project-high-level-tracker ♻️] B --> C[process-branch-name] B --> D[get-stage-field] From 87817a6e0c7d1b2bd5ae6741bd0354800c251476 Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Fri, 28 Feb 2025 16:32:29 -0500 Subject: [PATCH 05/72] Update GitHub Note Syntax --- docs/project-automation-readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/project-automation-readme.md b/docs/project-automation-readme.md index 6db3c2f0..24921a79 100644 --- a/docs/project-automation-readme.md +++ b/docs/project-automation-readme.md @@ -160,4 +160,5 @@ Ensure your project is set up to auto-add PRs to the project when they are opene --- -> [!NOTE] These workflows are designed for the RAPIDS ecosystem but can be adapted for any organization using GitHub Projects for development tracking. +> [!Note] +> These workflows are designed for the RAPIDS ecosystem but can be adapted for any organization using GitHub Projects for development tracking. From 1d7d605961b1d5a0a418752e08953f935d1fb28f Mon Sep 17 00:00:00 2001 From: Ben Jarmak Date: Mon, 3 Mar 2025 13:39:41 -0500 Subject: [PATCH 06/72] Use stage names instead of IDs, multi-issue-pr readme update --- .../workflows/project-high-level-tracker.yaml | 22 +++++++++---------- docs/project-automation-readme.md | 8 ++++++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/project-high-level-tracker.yaml b/.github/workflows/project-high-level-tracker.yaml index 29a0572f..617ad3b6 100644 --- a/.github/workflows/project-high-level-tracker.yaml +++ b/.github/workflows/project-high-level-tracker.yaml @@ -32,23 +32,23 @@ on: # ------------- Option IDs ------------- # Stage options - STAGE_PLANNED_ID: + STAGE_PLANNED_NAME: description: "📓 Planned option ID" default: "📓 Planned" type: string - STAGE_DEVELOPMENT_ID: + STAGE_DEVELOPMENT_NAME: description: "💻 Development option ID" default: "💻 Development" type: string - STAGE_BURNDOWN_ID: + STAGE_BURNDOWN_NAME: description: "🔥 Burndown option ID" default: "🔥 Burndown" type: string - STAGE_CODE_FREEZE_ID: + STAGE_CODE_FREEZE_NAME: description: "❄ Code Freeze option ID" default: "❄ Code Freeze" type: string - STAGE_HOTFIX_ID: + STAGE_HOTFIX_NAME: description: "🩹 Hotfix option ID" default: "🩹 Hotfix" type: string @@ -160,22 +160,22 @@ jobs: echo "Release date: $RELEASE_DATE" # Determine stage based on current date - STAGE_ID="${{ inputs.STAGE_PLANNED_ID }}" + STAGE_ID="${{ inputs.STAGE_PLANNED_NAME }}" if [[ "$CURRENT_DATE" < "$DEV_START" ]]; then - STAGE_ID="${{ inputs.STAGE_PLANNED_ID }}" + STAGE_ID="${{ inputs.STAGE_PLANNED_NAME }}" echo "Stage: Planned" elif [[ "$CURRENT_DATE" < "$BURNDOWN_START" ]]; then - STAGE_ID="${{ inputs.STAGE_DEVELOPMENT_ID }}" + STAGE_ID="${{ inputs.STAGE_DEVELOPMENT_NAME }}" echo "Stage: Development" elif [[ "$CURRENT_DATE" < "$FREEZE_START" ]]; then - STAGE_ID="${{ inputs.STAGE_BURNDOWN_ID }}" + STAGE_ID="${{ inputs.STAGE_BURNDOWN_NAME }}" echo "Stage: Burndown" elif [[ "$CURRENT_DATE" < "$RELEASE_DATE" ]]; then - STAGE_ID="${{ inputs.STAGE_CODE_FREEZE_ID }}" + STAGE_ID="${{ inputs.STAGE_CODE_FREEZE_NAME }}" echo "Stage: Code Freeze" else - STAGE_ID="${{ inputs.STAGE_HOTFIX_ID }}" + STAGE_ID="${{ inputs.STAGE_HOTFIX_NAME }}" echo "Stage: Hotfix" fi diff --git a/docs/project-automation-readme.md b/docs/project-automation-readme.md index 24921a79..99c5ecce 100644 --- a/docs/project-automation-readme.md +++ b/docs/project-automation-readme.md @@ -13,7 +13,13 @@ GitHub Projects are powerful, but automating them is not straightforward: - Each item has a **project-specific ID** that's different from its global node ID - Different field types (text, date, single-select, iteration) require different GraphQL mutations - Linking PRs to issues and keeping them in sync requires complex operations - - Work often begins in an Issue, but then is completed in the PR, requiring this synchronization + - Work often begins in an Issue, but then is completed in a PR, requiring this synchronization + +### PRs can be linked to multiple issues, and issues can be linked to multiple PRs which can lead to challenges in automation + +The PR-to-Issue linkage exists within the PR's API, but not within the Issue's API. Additionally, in GitHub if many PRs are linked to an issue, closing _any_ of the PRs will close the issue. + +The shared workflows here follow a similar pattern in that if `update-linked-issues` is run, it will update all issues linked to the PR if they are in the same project as the target workflow (ie issues with multiple Projects will only have the matching Project fields updated). ## 🧩 Workflow Architecture From 4846340ac1ea799671d050534cb049b3df9d63b7 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 4 Mar 2025 23:22:27 -0600 Subject: [PATCH 07/72] Add Python 3.13 --- .github/workflows/conda-cpp-tests.yaml | 14 +++++++------- .github/workflows/conda-python-build.yaml | 4 ++++ .github/workflows/conda-python-tests.yaml | 14 +++++++------- .github/workflows/wheels-build.yaml | 4 ++++ .github/workflows/wheels-test.yaml | 8 ++++---- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 79fdc157..2d3e6998 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -69,19 +69,19 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # Use the nightly matrix for branch tests diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index ff0319cb..6e4ec048 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -64,6 +64,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -71,6 +73,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 648bb671..21e13762 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -72,19 +72,19 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # Use the nightly matrix for branch tests diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index d029df57..f8842af8 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -87,6 +87,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -94,6 +96,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 239d6999..9fd4b824 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -82,17 +82,17 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # Use the nightly matrix for branch tests From 9de8f9e57af390aad7c19a1311af8bbf113b791f Mon Sep 17 00:00:00 2001 From: Ray Douglass Date: Thu, 13 Mar 2025 14:52:28 -0400 Subject: [PATCH 08/72] DOC v25.06 Updates [skip ci] From db60c52c5e418287833151a72a9c691dc46d9a1d Mon Sep 17 00:00:00 2001 From: Jaya Venkatesh Date: Mon, 24 Mar 2025 09:24:31 -0700 Subject: [PATCH 09/72] Optional Input for CUDA suffix in wheel name (#323) --- .github/workflows/wheels-build.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 06359837..dc6f5092 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -29,6 +29,10 @@ on: required: false type: boolean default: false + append-cuda-suffix: + required: false + type: boolean + default: true # allow a bigger runner instance node_type: @@ -193,12 +197,17 @@ jobs: PACKAGE_TYPE: ${{ inputs.package-type }} WHEEL_NAME: ${{ inputs.wheel-name }} PURE_WHEEL: ${{ inputs.pure-wheel }} + APPEND_CUDA_SUFFIX: ${{ inputs.append-cuda-suffix }} run: | if [ -z "${WHEEL_NAME}" ]; then WHEEL_NAME="${RAPIDS_REPOSITORY#*/}" fi export "RAPIDS_PY_CUDA_SUFFIX=$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" - export "RAPIDS_PY_WHEEL_NAME=${WHEEL_NAME}_${RAPIDS_PY_CUDA_SUFFIX}" + if [ "${APPEND_CUDA_SUFFIX}" = "true" ]; then + export "RAPIDS_PY_WHEEL_NAME=${WHEEL_NAME}_${RAPIDS_PY_CUDA_SUFFIX}" + else + export "RAPIDS_PY_WHEEL_NAME=${WHEEL_NAME}" + fi if [ "${PURE_WHEEL}" = "true" ]; then export "RAPIDS_PY_WHEEL_PURE=1" fi From a5e578b6ff50566712852595456d002dea073871 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 2 Apr 2025 13:26:17 -0500 Subject: [PATCH 10/72] Enable proxy cache on NVKS V100 nodes. (#325) --- .github/workflows/conda-cpp-tests.yaml | 2 -- .github/workflows/conda-python-tests.yaml | 2 -- .github/workflows/wheels-test.yaml | 2 -- 3 files changed, 6 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index a582f0d8..ca487730 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -164,8 +164,6 @@ jobs: - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true - # Skip the cache on RDS Lab nodes - if: ${{ matrix.GPU != 'v100' }} - name: C++ tests run: ${{ inputs.script }} diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index b5bca2a3..efcfc2b6 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -170,8 +170,6 @@ jobs: - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true - # Skip the cache on RDS Lab nodes - if: ${{ matrix.GPU != 'v100' }} - name: Python tests run: ${{ inputs.script }} diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index cc97ed89..023de874 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -179,8 +179,6 @@ jobs: - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true - # Skip the cache on RDS Lab nodes - if: ${{ matrix.GPU != 'v100' }} - name: Run tests run: ${{ inputs.script }} From a315db24d13d1448153ffc71861780e321bf9508 Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:09:28 -0700 Subject: [PATCH 11/72] make `RAPIDS_AUX_SECRET_1` be an input variable secret name, not the secret itself (#318) --- .github/workflows/build-in-devcontainer.yaml | 10 +++++----- .github/workflows/wheels-test.yaml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 0e509f80..3df36744 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -30,11 +30,11 @@ on: required: false type: string default: '' - # the use of secrets in shared-workflows is discouraged, especially for public repositories. - # these values were added for situations where the use of secrets is unavoidable. - secrets: - RAPIDS_AUX_SECRET_1: + # Note that this is the _name_ of a secret containing the key, not the key itself. + rapids-aux-secret-1: required: false + type: string + default: '' permissions: actions: read @@ -115,7 +115,7 @@ jobs: AWS_ACCESS_KEY_ID=${{ env.AWS_ACCESS_KEY_ID }} AWS_SESSION_TOKEN=${{ env.AWS_SESSION_TOKEN }} AWS_SECRET_ACCESS_KEY=${{ env.AWS_SECRET_ACCESS_KEY }} - RAPIDS_AUX_SECRET_1=${{ secrets.RAPIDS_AUX_SECRET_1 }} + RAPIDS_AUX_SECRET_1=${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} TRACEPARENT=${{ env.TRACEPARENT }} OTEL_SERVICE_NAME=${{ env.OTEL_SERVICE_NAME }} OTEL_EXPORTER_OTLP_ENDPOINT=${{ env.OTEL_EXPORTER_OTLP_ENDPOINT }} diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 023de874..89bb8b4a 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -35,11 +35,11 @@ on: required: false type: string default: "fail" - # the use of secrets in shared-workflows is discouraged, especially for public repositories. - # these values were added for situations where the use of secrets is unavoidable. - secrets: - RAPIDS_AUX_SECRET_1: + # Note that this is the _name_ of a secret containing the key, not the key itself. + rapids-aux-secret-1: required: false + type: string + default: '' defaults: run: @@ -184,7 +184,7 @@ jobs: run: ${{ inputs.script }} env: GH_TOKEN: ${{ github.token }} - RAPIDS_AUX_SECRET_1: ${{ secrets.RAPIDS_AUX_SECRET_1 }} + RAPIDS_AUX_SECRET_1: ${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} - name: Generate test report uses: test-summary/action@v2.4 From 2718e88bca4c35d6607e3400892579c23a62c8a5 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Mon, 14 Apr 2025 15:50:45 -0500 Subject: [PATCH 12/72] Add pipefail to devcontainer builds. --- .github/workflows/build-in-devcontainer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 3df36744..0aa8d306 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -122,7 +122,7 @@ jobs: OTEL_EXPORTER_OTLP_PROTOCOL=${{ env.OTEL_EXPORTER_OTLP_PROTOCOL }} OTEL_RESOURCE_ATTRIBUTES=${{ env.OTEL_RESOURCE_ATTRIBUTES }} runCmd: | - set -e; + set -euo pipefail; mkdir -p ~/.config/pip/; cat <> ~/.config/pip/pip.conf [global] From b0d5386ae9623c7ebfa18da48697dac2560edd83 Mon Sep 17 00:00:00 2001 From: Jaya Venkatesh Date: Wed, 16 Apr 2025 08:17:23 -0700 Subject: [PATCH 13/72] added descriptions to new variables in wheel build (#327) Co-authored-by: James Lamb --- .github/workflows/wheels-build.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index dc6f5092..46a39722 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -20,19 +20,23 @@ on: required: true type: string package-type: + description: "One of: [cpp, python]" required: false type: string wheel-name: required: false type: string + description: "Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64')" pure-wheel: required: false type: boolean default: false + description: "One of [true, false], true if the wheel is not dependent on operating system, Python minor version, or CPU architecture" append-cuda-suffix: required: false type: boolean default: true + description: "One of [true, false] to indicate if CUDA version should be appended to the wheel name" # allow a bigger runner instance node_type: From 92cc267b000b0c3319c72af1e9c33c37790923a0 Mon Sep 17 00:00:00 2001 From: Mike Sarahan Date: Wed, 16 Apr 2025 12:39:00 -0500 Subject: [PATCH 14/72] add mkdir -p to devcontainer setup (#328) --- .github/workflows/build-in-devcontainer.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 0aa8d306..6943be62 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -79,7 +79,7 @@ jobs: - name: Check if repo has devcontainer run: | - echo "REPOSITORY=$(basename $(pwd))" | tee -a "${GITHUB_ENV}"; + echo "REPOSITORY=$(basename "$(pwd)")" | tee -a "${GITHUB_ENV}"; if test -f .devcontainer/cuda${{ matrix.CUDA_VER }}-${{ matrix.PACKAGER }}/devcontainer.json; then echo "HAS_DEVCONTAINER=true" >> "${GITHUB_ENV}"; else @@ -144,6 +144,7 @@ jobs: fi cd ~/"${REPOSITORY}"; + mkdir -p telemetry-artifacts; ${{ inputs.build_command }} - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main From 824abccfdccb559706874a0fbfc16ab3de4e06ad Mon Sep 17 00:00:00 2001 From: ptaylor Date: Thu, 17 Apr 2025 09:00:34 -0700 Subject: [PATCH 15/72] add env and timeout-minutes inputs --- .github/workflows/build-in-devcontainer.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 6943be62..f2aae414 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -1,6 +1,8 @@ on: workflow_call: inputs: + env: + type: string sha: type: string arch: @@ -14,6 +16,9 @@ on: default: '["conda", "pip"]' repo: type: string + timeout-minutes: + type: number + default: 360 node_type: type: string default: "cpu8" @@ -53,6 +58,7 @@ permissions: jobs: build: + timeout-minutes: ${{ inputs.timeout-minutes }} strategy: fail-fast: false matrix: @@ -121,6 +127,7 @@ jobs: OTEL_EXPORTER_OTLP_ENDPOINT=${{ env.OTEL_EXPORTER_OTLP_ENDPOINT }} OTEL_EXPORTER_OTLP_PROTOCOL=${{ env.OTEL_EXPORTER_OTLP_PROTOCOL }} OTEL_RESOURCE_ATTRIBUTES=${{ env.OTEL_RESOURCE_ATTRIBUTES }} + ${{ inputs.env }} runCmd: | set -euo pipefail; mkdir -p ~/.config/pip/; From 1fdd8cfecadd8223a0741c19a1e76804a10b0f07 Mon Sep 17 00:00:00 2001 From: Jaya Venkatesh Date: Fri, 18 Apr 2025 12:39:55 -0700 Subject: [PATCH 16/72] Use the variable `package-name` for Distribution name in wheel builds (#330) --- .github/workflows/wheels-build.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 46a39722..89884433 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -19,6 +19,10 @@ on: script: required: true type: string + package-name: + required: false + type: string + description: "Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64')" package-type: description: "One of: [cpp, python]" required: false @@ -26,7 +30,7 @@ on: wheel-name: required: false type: string - description: "Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64')" + description: "DEPRECATED: Use package-name instead" pure-wheel: required: false type: boolean @@ -199,7 +203,7 @@ jobs: if: inputs.package-type != '' env: PACKAGE_TYPE: ${{ inputs.package-type }} - WHEEL_NAME: ${{ inputs.wheel-name }} + WHEEL_NAME: ${{ inputs.package-name != '' && inputs.package-name || inputs.wheel-name }} PURE_WHEEL: ${{ inputs.pure-wheel }} APPEND_CUDA_SUFFIX: ${{ inputs.append-cuda-suffix }} run: | From b29e79cb01b5716e7a9b019f3eba0451c740a281 Mon Sep 17 00:00:00 2001 From: Ray Douglass Date: Wed, 30 Apr 2025 15:06:49 -0400 Subject: [PATCH 17/72] DOC v25.08 Updates [skip ci] From 005b4b0a0099cf1040cfbb82aca4de111c29a447 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 30 Apr 2025 22:03:22 -0500 Subject: [PATCH 18/72] Drop CUDA 11 builds/tests --- .github/workflows/conda-cpp-build.yaml | 2 -- .github/workflows/conda-cpp-tests.yaml | 9 ++++----- .github/workflows/conda-python-build.yaml | 6 ------ .github/workflows/conda-python-tests.yaml | 9 ++++----- .github/workflows/wheels-build.yaml | 6 ------ .github/workflows/wheels-test.yaml | 6 +++--- 6 files changed, 11 insertions(+), 27 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 58ca161a..af2029aa 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -61,10 +61,8 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index ca487730..68db3155 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -81,20 +81,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 47c45646..ca91eaab 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -61,18 +61,12 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index efcfc2b6..7d936e6d 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -84,20 +84,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 89884433..229cedb0 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -106,18 +106,12 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 89bb8b4a..5bf8018b 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -95,15 +95,15 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " From 16b9c81eaf09190c0f94a57b8c063c2d54d6ce99 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 7 May 2025 15:17:09 -0500 Subject: [PATCH 19/72] Update to CUDA 12.9. --- .github/workflows/conda-cpp-build.yaml | 4 ++-- .github/workflows/conda-cpp-tests.yaml | 6 +++--- .github/workflows/conda-python-build.yaml | 16 ++++++++-------- .github/workflows/conda-python-tests.yaml | 6 +++--- .github/workflows/wheels-build.yaml | 16 ++++++++-------- .github/workflows/wheels-test.yaml | 8 ++++---- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 58ca161a..b6910f7e 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -62,10 +62,10 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index abfa8f97..96f6235a 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -83,7 +83,7 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: @@ -91,11 +91,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index a23d02b3..4c6cc506 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -62,22 +62,22 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index caeb6be1..92e51794 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -86,7 +86,7 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: @@ -94,11 +94,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 61b03f8f..357826e9 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -107,22 +107,22 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index cdca3740..62ff1553 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -93,19 +93,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From 070a5c3ef0d50d7cba5072673678d7b8c20fd464 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 7 May 2025 16:31:14 -0500 Subject: [PATCH 20/72] make artifact uploads optional (#340) --- .github/workflows/conda-cpp-build.yaml | 8 ++++++++ .github/workflows/conda-python-build.yaml | 8 ++++++++ .github/workflows/wheels-build.yaml | 13 +++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 58ca161a..cab118bb 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -19,6 +19,11 @@ on: script: type: string default: "ci/build_cpp.sh" + upload-artifacts: + type: boolean + default: true + required: false + description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" matrix_filter: type: string default: "." @@ -125,15 +130,18 @@ jobs: STEP_NAME: "C++ build" GH_TOKEN: ${{ github.token }} - name: Get Package Name and Location + if: ${{ inputs.upload-artifacts }} run: | echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name conda_cpp)" >> "${GITHUB_OUTPUT}" echo "CONDA_OUTPUT_DIR=${RAPIDS_CONDA_BLD_OUTPUT_DIR}" >> "${GITHUB_OUTPUT}" id: package-name - name: Show files to be uploaded + if: ${{ inputs.upload-artifacts }} run: | echo "Contents of directory to be uploaded:" ls -R ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - uses: actions/upload-artifact@v4 + if: ${{ inputs.upload-artifacts }} with: name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 47c45646..11ebcaf1 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -19,6 +19,11 @@ on: script: type: string default: "ci/build_python.sh" + upload-artifacts: + type: boolean + default: true + required: false + description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" matrix_filter: type: string default: "." @@ -125,15 +130,18 @@ jobs: env: GH_TOKEN: ${{ github.token }} - name: Get Package Name and Location + if: ${{ inputs.upload-artifacts }} run: | echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name conda_python)" >> "${GITHUB_OUTPUT}" echo "CONDA_OUTPUT_DIR=${RAPIDS_CONDA_BLD_OUTPUT_DIR}" >> "${GITHUB_OUTPUT}" id: package-name - name: Show files to be uploaded + if: ${{ inputs.upload-artifacts }} run: | echo "Contents of directory to be uploaded:" ls -R ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - uses: actions/upload-artifact@v4 + if: ${{ inputs.upload-artifacts }} with: name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 89884433..972c69c7 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -25,7 +25,7 @@ on: description: "Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64')" package-type: description: "One of: [cpp, python]" - required: false + required: true type: string wheel-name: required: false @@ -52,6 +52,11 @@ on: matrix_filter: type: string default: "." + upload-artifacts: + type: boolean + default: true + required: false + description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" # Extra repository that will be cloned into the project directory. extra-repo: @@ -200,7 +205,7 @@ jobs: shell: bash -leo pipefail {0} - name: Get package name - if: inputs.package-type != '' + if: ${{ inputs.upload-artifacts }} env: PACKAGE_TYPE: ${{ inputs.package-type }} WHEEL_NAME: ${{ inputs.package-name != '' && inputs.package-name || inputs.wheel-name }} @@ -224,13 +229,13 @@ jobs: id: package-name - name: Show files to be uploaded - if: inputs.package-type != '' + if: ${{ inputs.upload-artifacts }} run: | echo "Contents of directory to be uploaded:" ls -R ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} - uses: actions/upload-artifact@v4 - if: inputs.package-type != '' + if: ${{ inputs.upload-artifacts }} with: name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} From 73b3dcbf14655ac0aeb67b9a2eb11d27e9d429d4 Mon Sep 17 00:00:00 2001 From: Ben Jarmak <104460670+jarmak-nv@users.noreply.github.com> Date: Thu, 8 May 2025 10:02:26 -0400 Subject: [PATCH 21/72] Fix type mismatch for graphQL on single selects (#343) --- .github/workflows/project-get-set-single-select-field.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/project-get-set-single-select-field.yaml b/.github/workflows/project-get-set-single-select-field.yaml index a43c0083..d8186ce5 100644 --- a/.github/workflows/project-get-set-single-select-field.yaml +++ b/.github/workflows/project-get-set-single-select-field.yaml @@ -102,7 +102,7 @@ jobs: ... on ProjectV2 { field(name: $fieldName) { ... on ProjectV2SingleSelectField { - options(names: $optionName) {id} + options(names: [$optionName]) {id} } } } From 6237c4c88ca24fcbcc0d56f1ec24b98463b8acae Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 09:45:52 -0500 Subject: [PATCH 22/72] Update step-security/changed-files action to v46 (#342) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/changed-files.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changed-files.yaml b/.github/workflows/changed-files.yaml index b3c27af3..b6fb85db 100644 --- a/.github/workflows/changed-files.yaml +++ b/.github/workflows/changed-files.yaml @@ -68,7 +68,7 @@ jobs: (echo -n "merge-base="; git merge-base "$BASE_SHA" "$PR_SHA") | tee --append "$GITHUB_OUTPUT" - name: Get changed files id: changed-files - uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1 + uses: step-security/changed-files@95b56dadb92a30ca9036f16423fd3c088a71ee94 # v46.0.5 with: base_sha: ${{ steps.calculate-merge-base.outputs.merge-base }} sha: ${{ fromJSON(steps.get-pr-info.outputs.pr-info).head.sha }} From 83fd623275dbe982e2ab5c589d7de496d7d772cb Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Mon, 12 May 2025 15:46:21 -0500 Subject: [PATCH 23/72] Add Python 3.13 (#268) Co-authored-by: Gil Forsyth Co-authored-by: James Lamb --- .github/workflows/conda-cpp-tests.yaml | 14 +++++++------- .github/workflows/conda-python-build.yaml | 4 ++++ .github/workflows/conda-python-tests.yaml | 14 +++++++------- .github/workflows/wheels-build.yaml | 4 ++++ .github/workflows/wheels-test.yaml | 8 ++++---- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index ca487730..abfa8f97 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -83,19 +83,19 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 11ebcaf1..e6c53dc8 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -72,6 +72,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -79,6 +81,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index efcfc2b6..caeb6be1 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -86,19 +86,19 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 972c69c7..7615eef5 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -117,6 +117,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -124,6 +126,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 89bb8b4a..cdca3740 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -95,17 +95,17 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From 1ddf09797c78c158f23af3d4ef8a0df5801fcd07 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 13 May 2025 15:34:38 -0500 Subject: [PATCH 24/72] use GitHub Actions artifacts in conda-cpp-post-build-checks (#347) --- .github/workflows/conda-cpp-post-build-checks.yaml | 4 +++- .github/workflows/wheels-publish.yaml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 1f72ac22..7dccdd82 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -70,8 +70,10 @@ jobs: echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" - name: Download conda C++ build artifacts + env: + GH_TOKEN: ${{ github.token }} run: | - CPP_DIR=$(rapids-download-conda-from-s3 cpp) + CPP_DIR=$(rapids-download-conda-from-github cpp) EXTRACTED_DIR=$(rapids-extract-conda-files "${CPP_DIR}") echo "RAPIDS_EXTRACTED_DIR=${EXTRACTED_DIR}" >> "${GITHUB_ENV}" - name: Get weak detection tool diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 96148846..9166aec3 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -86,7 +86,7 @@ jobs: date: ${{ inputs.date }} sha: ${{ inputs.sha }} - - name: Download wheels from downloads.rapids.ai and publish to anaconda repository + - name: Download wheels from artifact storage and publish to anaconda repository run: rapids-wheels-anaconda "${{ inputs.package-name }}" "${{ inputs.package-type }}" env: RAPIDS_CONDA_TOKEN: ${{ secrets.CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN }} From 35e0ffc99caa386655bab08a958fe45e09b0ad58 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 14 May 2025 10:48:36 -0500 Subject: [PATCH 25/72] make input validation, upload logic in build workflows stricter (#348) --- .github/workflows/conda-cpp-build.yaml | 1 + .github/workflows/conda-python-build.yaml | 1 + .github/workflows/wheels-build.yaml | 19 ++++++++----------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index cab118bb..6e72108a 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -143,6 +143,7 @@ jobs: - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: + if-no-files-found: 'error' name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - name: Upload additional artifacts diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index e6c53dc8..b3277926 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -147,6 +147,7 @@ jobs: - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: + if-no-files-found: 'error' name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - name: Upload additional artifacts diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 7615eef5..130305e0 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -20,17 +20,13 @@ on: required: true type: string package-name: - required: false + required: true type: string description: "Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64')" package-type: description: "One of: [cpp, python]" required: true type: string - wheel-name: - required: false - type: string - description: "DEPRECATED: Use package-name instead" pure-wheel: required: false type: boolean @@ -211,19 +207,19 @@ jobs: - name: Get package name if: ${{ inputs.upload-artifacts }} env: + APPEND_CUDA_SUFFIX: ${{ inputs.append-cuda-suffix }} + PACKAGE_NAME: ${{ inputs.package-name }} PACKAGE_TYPE: ${{ inputs.package-type }} - WHEEL_NAME: ${{ inputs.package-name != '' && inputs.package-name || inputs.wheel-name }} PURE_WHEEL: ${{ inputs.pure-wheel }} - APPEND_CUDA_SUFFIX: ${{ inputs.append-cuda-suffix }} run: | - if [ -z "${WHEEL_NAME}" ]; then - WHEEL_NAME="${RAPIDS_REPOSITORY#*/}" + if [ -z "${PACKAGE_NAME}" ]; then + PACKAGE_NAME="${RAPIDS_REPOSITORY#*/}" fi export "RAPIDS_PY_CUDA_SUFFIX=$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" if [ "${APPEND_CUDA_SUFFIX}" = "true" ]; then - export "RAPIDS_PY_WHEEL_NAME=${WHEEL_NAME}_${RAPIDS_PY_CUDA_SUFFIX}" + export "RAPIDS_PY_WHEEL_NAME=${PACKAGE_NAME}_${RAPIDS_PY_CUDA_SUFFIX}" else - export "RAPIDS_PY_WHEEL_NAME=${WHEEL_NAME}" + export "RAPIDS_PY_WHEEL_NAME=${PACKAGE_NAME}" fi if [ "${PURE_WHEEL}" = "true" ]; then export "RAPIDS_PY_WHEEL_PURE=1" @@ -241,6 +237,7 @@ jobs: - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: + if-no-files-found: 'error' name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} From 67ed20646a23ca60bc609174d2e3a243af1b920d Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 14 May 2025 12:04:29 -0500 Subject: [PATCH 26/72] Enable pre-commit rules. --- .github/actionlint.yaml | 12 ++++ .github/workflows/breaking-change-alert.yaml | 62 +++++++++++-------- .github/workflows/build-in-devcontainer.yaml | 6 +- .github/workflows/changed-files.yaml | 4 +- .github/workflows/conda-cpp-build.yaml | 18 ++++-- .../conda-cpp-post-build-checks.yaml | 18 ++++-- .github/workflows/conda-cpp-tests.yaml | 17 +++-- .github/workflows/conda-python-build.yaml | 18 ++++-- .github/workflows/conda-python-tests.yaml | 16 +++-- .github/workflows/conda-upload-packages.yaml | 14 +++-- .github/workflows/custom-job.yaml | 15 +++-- .github/workflows/project-get-item-id.yaml | 9 +-- .../project-get-set-iteration-field.yaml | 8 ++- .../project-get-set-single-select-field.yaml | 9 ++- .../project-set-text-date-numeric-field.yaml | 6 +- .../project-update-linked-issues.yaml | 6 ++ .github/workflows/wheels-build.yaml | 12 ++-- .github/workflows/wheels-publish.yaml | 4 +- .github/workflows/wheels-test.yaml | 2 +- .pre-commit-config.yaml | 25 ++++++++ 20 files changed, 192 insertions(+), 89 deletions(-) create mode 100644 .github/actionlint.yaml create mode 100644 .pre-commit-config.yaml diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 00000000..f71386be --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,12 @@ +# Configuration related to self-hosted runners. +self-hosted-runner: + # Labels of self-hosted runner in array of strings. + labels: + - linux-amd64-* + - linux-arm64-* + +# Configuration variables in array of strings defined in your repository or organization. +config-variables: + - AWS_ROLE_ARN + - AWS_REGION + - TELEMETRY_ENABLED diff --git a/.github/workflows/breaking-change-alert.yaml b/.github/workflows/breaking-change-alert.yaml index fa106f8b..6c81c933 100644 --- a/.github/workflows/breaking-change-alert.yaml +++ b/.github/workflows/breaking-change-alert.yaml @@ -73,21 +73,23 @@ jobs: echo "$1" | jq ${flag} -c . | grep -E '^".*"$' | awk '{print substr($0, 2, length($0) - 2)}' && [ "${PIPESTATUS[2]}" -eq 0 ] } - # Escape all input variables - echo "sender_login=$(escape_json "${SENDER_LOGIN}")" >> $GITHUB_OUTPUT - echo "sender_avatar=$(escape_json "${SENDER_AVATAR}")" >> $GITHUB_OUTPUT - echo "repo=$(escape_json "${REPO}")" >> $GITHUB_OUTPUT - echo "pr_number=${PR_NUMBER}" >> $GITHUB_OUTPUT - echo "pr_title=$(escape_json "${PR_TITLE}")" >> $GITHUB_OUTPUT - echo "pr_body=$(escape_json "${PR_BODY}" slurp)" >> $GITHUB_OUTPUT - echo "pr_base_ref=$(escape_json "${PR_BASE_REF}")" >> $GITHUB_OUTPUT - echo "pr_author=$(escape_json "${PR_AUTHOR}")" >> $GITHUB_OUTPUT + { + # Escape all input variables + echo "sender_login=$(escape_json "${SENDER_LOGIN}")" + echo "sender_avatar=$(escape_json "${SENDER_AVATAR}")" + echo "repo=$(escape_json "${REPO}")" + echo "pr_number=${PR_NUMBER}" + echo "pr_title=$(escape_json "${PR_TITLE}")" + echo "pr_body=$(escape_json "${PR_BODY}" slurp)" + echo "pr_base_ref=$(escape_json "${PR_BASE_REF}")" + echo "pr_author=$(escape_json "${PR_AUTHOR}")" - # Create escaped URLs - echo "repo_url=$(escape_json "https://github.com/${REPO}")" >> $GITHUB_OUTPUT - echo "pr_url=$(escape_json "https://github.com/${REPO}/pull/${PR_NUMBER}")" >> $GITHUB_OUTPUT - echo "branch_url=$(escape_json "https://github.com/${REPO}/tree/${PR_BASE_REF}")" >> $GITHUB_OUTPUT - echo "author_url=$(escape_json "https://github.com/${PR_AUTHOR}")" >> $GITHUB_OUTPUT + # Create escaped URLs + echo "repo_url=$(escape_json "https://github.com/${REPO}")" + echo "pr_url=$(escape_json "https://github.com/${REPO}/pull/${PR_NUMBER}")" + echo "branch_url=$(escape_json "https://github.com/${REPO}/tree/${PR_BASE_REF}")" + echo "author_url=$(escape_json "https://github.com/${PR_AUTHOR}")" + } >> "${GITHUB_OUTPUT}" - name: Determine notification parameters id: notification @@ -96,21 +98,29 @@ jobs: PR_MERGED: ${{ inputs.pr_merged }} run: | if [[ "$EVENT_ACTION" == "closed" && "$PR_MERGED" == "true" ]]; then - echo "action=Merged" >> $GITHUB_OUTPUT - echo "color=#D00000" >> $GITHUB_OUTPUT - echo "icon=:rocket:" >> $GITHUB_OUTPUT + { + echo "action=Merged" + echo "color=#D00000" + echo "icon=:rocket:" + } >> "${GITHUB_OUTPUT}" elif [[ "$EVENT_ACTION" == "closed" ]]; then - echo "action=Closed" >> $GITHUB_OUTPUT - echo "color=#1d9bd1" >> $GITHUB_OUTPUT - echo "icon=:information_source:" >> $GITHUB_OUTPUT + { + echo "action=Closed" + echo "color=#1d9bd1" + echo "icon=:information_source:" + } >> "${GITHUB_OUTPUT}" elif [[ "$EVENT_ACTION" == "reopened" ]]; then - echo "action=Reopened" >> $GITHUB_OUTPUT - echo "color=warning" >> $GITHUB_OUTPUT - echo "icon=:warning:" >> $GITHUB_OUTPUT + { + echo "action=Reopened" + echo "color=warning" + echo "icon=:warning:" + } >> "${GITHUB_OUTPUT}" else - echo "action=Modified" >> $GITHUB_OUTPUT - echo "color=good" >> $GITHUB_OUTPUT - echo "icon=:information_source:" >> $GITHUB_OUTPUT + { + echo "action=Modified" + echo "color=good" + echo "icon=:information_source:" + } >> "${GITHUB_OUTPUT}" fi - name: Send Slack notification diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index f2aae414..ce10680e 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -85,11 +85,11 @@ jobs: - name: Check if repo has devcontainer run: | - echo "REPOSITORY=$(basename "$(pwd)")" | tee -a "${GITHUB_ENV}"; + echo "REPOSITORY=$(basename "$(pwd)")" | tee -a "${GITHUB_ENV}" if test -f .devcontainer/cuda${{ matrix.CUDA_VER }}-${{ matrix.PACKAGER }}/devcontainer.json; then - echo "HAS_DEVCONTAINER=true" >> "${GITHUB_ENV}"; + echo "HAS_DEVCONTAINER=true" >> "${GITHUB_ENV}" else - echo "HAS_DEVCONTAINER=false" >> "${GITHUB_ENV}"; + echo "HAS_DEVCONTAINER=false" >> "${GITHUB_ENV}" fi - if: ${{ env.HAS_DEVCONTAINER == 'true' }} uses: aws-actions/configure-aws-credentials@v4 diff --git a/.github/workflows/changed-files.yaml b/.github/workflows/changed-files.yaml index b6fb85db..2fe0492c 100644 --- a/.github/workflows/changed-files.yaml +++ b/.github/workflows/changed-files.yaml @@ -65,7 +65,7 @@ jobs: PR_SHA: ${{ fromJSON(steps.get-pr-info.outputs.pr-info).head.sha }} BASE_SHA: ${{ fromJSON(steps.get-pr-info.outputs.pr-info).base.sha }} run: | - (echo -n "merge-base="; git merge-base "$BASE_SHA" "$PR_SHA") | tee --append "$GITHUB_OUTPUT" + (echo -n "merge-base="; git merge-base "$BASE_SHA" "$PR_SHA") | tee --append "${GITHUB_OUTPUT}" - name: Get changed files id: changed-files uses: step-security/changed-files@95b56dadb92a30ca9036f16423fd3c088a71ee94 # v46.0.5 @@ -85,7 +85,7 @@ jobs: key="$(echo "$file" | sed -E 's/^\.github\/outputs\/(.*)\.json$/\1/g')" file_args=("${file_args[@]}" --slurpfile "$key" "$file") done - (echo -n "transformed-output="; jq -c -n "\$ARGS.named | to_entries | map({"key": .key, "value": .value[]}) | from_entries | $TRANSFORM_EXPR" "${file_args[@]}") | tee --append "$GITHUB_OUTPUT" + (echo -n "transformed-output="; jq -c -n "\$ARGS.named | to_entries | map({\"key\": .key, \"value\": .value[]}) | from_entries | $TRANSFORM_EXPR" "${file_args[@]}") | tee --append "${GITHUB_OUTPUT}" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 6e72108a..778a015c 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -105,11 +105,17 @@ jobs: ref: ${{ inputs.sha }} fetch-depth: 0 - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main @@ -131,7 +137,7 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} - run: | + run: | echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name conda_cpp)" >> "${GITHUB_OUTPUT}" echo "CONDA_OUTPUT_DIR=${RAPIDS_CONDA_BLD_OUTPUT_DIR}" >> "${GITHUB_OUTPUT}" id: package-name @@ -148,7 +154,7 @@ jobs: path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch) + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 7dccdd82..3d44a77a 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -64,11 +64,17 @@ jobs: continue-on-error: true if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(cd ./src && git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(cd ./src && git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Download conda C++ build artifacts env: GH_TOKEN: ${{ github.token }} @@ -88,9 +94,9 @@ jobs: SYMBOL_EXCLUSIONS: ${{ inputs.symbol_exclusions }} run: | if [ -n "${SYMBOL_EXCLUSIONS}" ]; then - python ./tool/detect.py ${RAPIDS_EXTRACTED_DIR}/lib -e "${SYMBOL_EXCLUSIONS}" + python ./tool/detect.py "${RAPIDS_EXTRACTED_DIR}"/lib -e "${SYMBOL_EXCLUSIONS}" else - python ./tool/detect.py ${RAPIDS_EXTRACTED_DIR}/lib + python ./tool/detect.py "${RAPIDS_EXTRACTED_DIR}"/lib fi - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index abfa8f97..1880df22 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -154,12 +154,19 @@ jobs: if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1'}} with: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }},rapids.GPU=${{ matrix.GPU }},rapids.DRIVER=${{ matrix.DRIVER }},rapids.DEPENDENCIES=${{ matrix.DEPENDENCIES }}" + - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main @@ -176,7 +183,7 @@ jobs: if: always() - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch) + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index b3277926..96257106 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -116,11 +116,17 @@ jobs: ref: ${{ inputs.sha }} fetch-depth: 0 - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true @@ -135,7 +141,7 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} - run: | + run: | echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name conda_python)" >> "${GITHUB_OUTPUT}" echo "CONDA_OUTPUT_DIR=${RAPIDS_CONDA_BLD_OUTPUT_DIR}" >> "${GITHUB_OUTPUT}" id: package-name @@ -152,7 +158,7 @@ jobs: path: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.} + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.}" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index caeb6be1..c3598640 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -152,11 +152,17 @@ jobs: fetch-depth: 0 - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" # This has to be AFTER the checkout step. It creates a telemetry-artifacts directory, # and the checkout step would destroy it. @@ -193,7 +199,7 @@ jobs: --handle-no-reports-found - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.} + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.}" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index 3cbd4cda..6b8086b6 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -63,11 +63,17 @@ jobs: fetch-depth: 0 - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Set Proper Conda Upload Token run: | diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 09bbb436..0cfc51ba 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -87,12 +87,17 @@ jobs: run: | echo "RAPIDS_BASE_BRANCH=${{ fromJSON(steps.get-pr-info.outputs.pr-info).base.ref }}" >> "${GITHUB_ENV}" - name: Standardize repository information + env: + RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} + RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} + RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} run: | - echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" - echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" - echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" - + { + echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" + echo "RAPIDS_SHA=$(git rev-parse HEAD)" + echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" + echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" + } >> "${GITHUB_ENV}" - name: Run script run: ${{ inputs.run_script }} env: diff --git a/.github/workflows/project-get-item-id.yaml b/.github/workflows/project-get-item-id.yaml index e64ac424..d80926ee 100644 --- a/.github/workflows/project-get-item-id.yaml +++ b/.github/workflows/project-get-item-id.yaml @@ -50,9 +50,10 @@ jobs: # Query up to 10 projects for the PR # There's no graphQL filter configured to query by a specific project # So we need to query all projects and filter the result ourselves + # shellcheck disable=SC2016 gh api graphql -F nodeId="$ENV_ITEM_NODE_ID" -f query=' query($nodeId: ID!) { - node(id: $nodeId) { + node(id: $nodeId) { ... on PullRequest { projectItems(first: 10) { nodes { @@ -75,10 +76,10 @@ jobs: } } }' > project_data.json - + # Use jq to do the actual filtering, using --arg for safe variable passing - item_project_id=$(jq --arg project_id "$ENV_PROJECT_ID" -r '.data.node.projectItems.nodes[] | + item_project_id=$(jq --arg project_id "${ENV_PROJECT_ID}" -r '.data.node.projectItems.nodes[] | select(.project.id == $project_id) | .id' project_data.json) - echo "ITEM_PROJECT_ID=$item_project_id" >> $GITHUB_OUTPUT + echo "ITEM_PROJECT_ID=${item_project_id}" >> "${GITHUB_OUTPUT}" continue-on-error: true diff --git a/.github/workflows/project-get-set-iteration-field.yaml b/.github/workflows/project-get-set-iteration-field.yaml index 325fcd7c..1e71e96f 100644 --- a/.github/workflows/project-get-set-iteration-field.yaml +++ b/.github/workflows/project-get-set-iteration-field.yaml @@ -19,7 +19,7 @@ on: description: "The graphQL node ID of the iteration field" type: string required: true - + ITEM_PROJECT_ID: description: "The issue or PR's graphQL project-specific ID" type: string @@ -69,6 +69,7 @@ jobs: run: | # Get current iteration iteration id # The current iteration is always the first element in the returned list + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" -F fieldName="$ENV_ITERATION_FIELD_NAME" -f query=' query($projectId: ID!, $fieldName: String!) { node(id: $projectId) { @@ -88,10 +89,10 @@ jobs: } } }' > iteration_option_data.json - + # Use jq with --arg for safe variable handling current_iteration_option_id=$(jq --exit-status -r '.data.node.field.configuration.iterations[0].id' iteration_option_data.json) - echo "ITERATION_OPTION_ID=$current_iteration_option_id" >> "$GITHUB_OUTPUT" + echo "ITERATION_OPTION_ID=$current_iteration_option_id" >> "${GITHUB_OUTPUT}" continue-on-error: true - name: Update item iteration field @@ -104,6 +105,7 @@ jobs: ENV_ITERATION_FIELD_ID: ${{ inputs.ITERATION_FIELD_ID }} ENV_ITERATION_OPTION_ID: ${{ steps.get_iteration_option_id.outputs.ITERATION_OPTION_ID }} run: | + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$ENV_ITEM_PROJECT_ID" \ -F fieldId="$ENV_ITERATION_FIELD_ID" \ diff --git a/.github/workflows/project-get-set-single-select-field.yaml b/.github/workflows/project-get-set-single-select-field.yaml index d8186ce5..033d6210 100644 --- a/.github/workflows/project-get-set-single-select-field.yaml +++ b/.github/workflows/project-get-set-single-select-field.yaml @@ -19,7 +19,7 @@ on: description: "The graphQL node ID of the single-select field" type: string required: true - + ITEM_PROJECT_ID: description: "The issue or PR's graphQL project-specific ID" type: string @@ -77,6 +77,7 @@ jobs: # Get single_select option id if [ -z "$ENV_SINGLE_SELECT_OPTION_VALUE" ]; then # No option specified, get first option in list + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ -f query=' @@ -93,6 +94,7 @@ jobs: }' > single_select_option_data.json else # Get specific value + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ -F optionName="$ENV_SINGLE_SELECT_OPTION_VALUE" \ @@ -109,10 +111,10 @@ jobs: } }' > single_select_option_data.json fi - + # Use jq with --exit-status to fail if no option is found current_single_select_option_id=$(jq --exit-status -r '.data.node.field.options[0].id' single_select_option_data.json) - echo "SINGLE_SELECT_OPTION_ID=$current_single_select_option_id" >> "$GITHUB_OUTPUT" + echo "SINGLE_SELECT_OPTION_ID=$current_single_select_option_id" >> "${GITHUB_OUTPUT}" continue-on-error: true - name: Update item single_select field @@ -125,6 +127,7 @@ jobs: ENV_SINGLE_SELECT_FIELD_ID: ${{ inputs.SINGLE_SELECT_FIELD_ID }} ENV_SINGLE_SELECT_OPTION_ID: ${{ steps.get_single_select_option_id.outputs.SINGLE_SELECT_OPTION_ID }} run: | + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$ENV_ITEM_PROJECT_ID" \ -F fieldId="$ENV_SINGLE_SELECT_FIELD_ID" \ diff --git a/.github/workflows/project-set-text-date-numeric-field.yaml b/.github/workflows/project-set-text-date-numeric-field.yaml index 235a4bd1..0bc48909 100644 --- a/.github/workflows/project-set-text-date-numeric-field.yaml +++ b/.github/workflows/project-set-text-date-numeric-field.yaml @@ -24,7 +24,7 @@ on: description: "The graphQL node ID of the field" type: string required: true - + ITEM_PROJECT_ID: description: "The issue or PR's graphQL project-specific ID" type: string @@ -32,7 +32,6 @@ on: ITEM_NODE_ID: description: "The issue or PR's graphQL node ID" - default: null type: string required: true @@ -66,6 +65,7 @@ jobs: run: | # Set the field based on the inputted desired value if [ "$ENV_FIELD_TYPE" == "date" ] || [ "$ENV_FIELD_TYPE" == "text" ]; then + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$ENV_ITEM_PROJECT_ID" \ -F fieldId="$ENV_FIELD_ID" \ @@ -88,6 +88,7 @@ jobs: }' elif [ "$ENV_FIELD_TYPE" == "number" ]; then + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$ENV_ITEM_PROJECT_ID" \ -F fieldId="$ENV_FIELD_ID" \ @@ -114,6 +115,7 @@ jobs: fi # Validate the response + # shellcheck disable=SC2181 if [ $? -ne 0 ]; then echo "Error: Failed to update field value" >&2 exit 1 diff --git a/.github/workflows/project-update-linked-issues.yaml b/.github/workflows/project-update-linked-issues.yaml index b0e0f7b8..4a8cbdd7 100644 --- a/.github/workflows/project-update-linked-issues.yaml +++ b/.github/workflows/project-update-linked-issues.yaml @@ -61,6 +61,7 @@ jobs: ENV_UPDATE_FIELD_VALUE: ${{ inputs.UPDATE_FIELD_VALUE }} run: | # Find the linked issues to the PR + # shellcheck disable=SC2016 gh api graphql -F prNodeId="$ENV_PR_NODE_ID" -f query=' query($prNodeId: ID!) { node(id: $prNodeId) { @@ -101,6 +102,7 @@ jobs: case "$ENV_UPDATE_FIELD_TYPE" in "iteration") + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$issue_id" \ -F fieldId="$ENV_UPDATE_FIELD_ID" \ @@ -121,6 +123,7 @@ jobs: ;; "single_select") + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$issue_id" \ -F fieldId="$ENV_UPDATE_FIELD_ID" \ @@ -141,6 +144,7 @@ jobs: ;; "date"|"text") + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$issue_id" \ -F fieldId="$ENV_UPDATE_FIELD_ID" \ @@ -162,6 +166,7 @@ jobs: ;; "number") + # shellcheck disable=SC2016 gh api graphql -F projectId="$ENV_PROJECT_ID" \ -F itemId="$issue_id" \ -F fieldId="$ENV_UPDATE_FIELD_ID" \ @@ -187,6 +192,7 @@ jobs: ;; esac + # shellcheck disable=SC2181 if [ $? -ne 0 ]; then echo "Error: Failed to update field for issue $issue_id" >&2 exit 1 diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 130305e0..e3701250 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -173,7 +173,7 @@ jobs: if: ${{ inputs.extra-repo != '' }} run: | EXTRA_REPO_PATH=$(echo ${{ inputs.extra-repo }} | cut -d "/" -f 2) - echo "EXTRA_REPO_PATH=${EXTRA_REPO_PATH}" >> $GITHUB_OUTPUT + echo "EXTRA_REPO_PATH=${EXTRA_REPO_PATH}" >> "${GITHUB_OUTPUT}" - name: checkout extra repos uses: actions/checkout@v4 @@ -215,7 +215,7 @@ jobs: if [ -z "${PACKAGE_NAME}" ]; then PACKAGE_NAME="${RAPIDS_REPOSITORY#*/}" fi - export "RAPIDS_PY_CUDA_SUFFIX=$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" + export "RAPIDS_PY_CUDA_SUFFIX=$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" if [ "${APPEND_CUDA_SUFFIX}" = "true" ]; then export "RAPIDS_PY_WHEEL_NAME=${PACKAGE_NAME}_${RAPIDS_PY_CUDA_SUFFIX}" else @@ -224,7 +224,7 @@ jobs: if [ "${PURE_WHEEL}" = "true" ]; then export "RAPIDS_PY_WHEEL_PURE=1" fi - echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name wheel_${PACKAGE_TYPE})" >> "${GITHUB_OUTPUT}" + echo "RAPIDS_PACKAGE_NAME=$(RAPIDS_NO_PKG_EXTENSION=true rapids-package-name "wheel_${PACKAGE_TYPE}")" >> "${GITHUB_OUTPUT}" echo "WHEEL_OUTPUT_DIR=${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" >> "${GITHUB_OUTPUT}" id: package-name @@ -233,17 +233,17 @@ jobs: run: | echo "Contents of directory to be uploaded:" ls -R ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} - + - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: if-no-files-found: 'error' name: ${{ steps.package-name.outputs.RAPIDS_PACKAGE_NAME }} path: ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} - + - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.} + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.}" - name: Telemetry upload attributes if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 9166aec3..868cc8d1 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -97,9 +97,9 @@ jobs: if: ${{ inputs.publish_to_pypi }} run: | if rapids-is-release-build; then - echo "is_release_build=true" | tee -a ${GITHUB_OUTPUT} + echo "is_release_build=true" | tee -a "${GITHUB_OUTPUT}" else - echo "is_release_build=false" | tee -a ${GITHUB_OUTPUT} + echo "is_release_build=false" | tee -a "${GITHUB_OUTPUT}" fi - name: Publish the downloaded wheels to PyPI diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index cdca3740..e7641a1c 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -195,7 +195,7 @@ jobs: - name: Upload additional artifacts if: "!cancelled()" - run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.} + run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.}" - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..9ce49e26 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,25 @@ +--- +# Copyright (c) 2025, NVIDIA CORPORATION. + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: check-added-large-files + - id: check-yaml + - id: end-of-file-fixer + - repo: https://github.com/rhysd/actionlint + rev: v1.7.7 + hooks: + - id: actionlint-docker + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.11.9 + hooks: + - id: ruff + args: ["--fix"] + - id: ruff-format + - repo: https://github.com/rapidsai/pre-commit-hooks + rev: v0.6.0 + hooks: + - id: verify-copyright From 22ed31ab1f627a1d729975ce5c3f9e16e606e6a5 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 14 May 2025 12:09:48 -0500 Subject: [PATCH 27/72] Sort vars --- .github/actionlint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index f71386be..9cab3c5c 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -7,6 +7,6 @@ self-hosted-runner: # Configuration variables in array of strings defined in your repository or organization. config-variables: - - AWS_ROLE_ARN - AWS_REGION + - AWS_ROLE_ARN - TELEMETRY_ENABLED From 258ca04e4a475306e99deecf2509ed74926f81d3 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 14 May 2025 12:58:42 -0500 Subject: [PATCH 28/72] Build with 12.8, test with 12.9. This avoids a compiler regression in 12.9 that affects cudf. --- .github/workflows/conda-cpp-build.yaml | 4 ++-- .github/workflows/conda-python-build.yaml | 16 ++++++++-------- .github/workflows/wheels-build.yaml | 16 ++++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index efea8be8..778a015c 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -67,10 +67,10 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 65e045b5..96257106 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -67,22 +67,22 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 765cf4b3..e3701250 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -108,22 +108,22 @@ jobs: export MATRIX=" # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( From 0e76dc4274ce353ef229920e6393bd1bf125ac10 Mon Sep 17 00:00:00 2001 From: Ben Jarmak <104460670+jarmak-nv@users.noreply.github.com> Date: Thu, 15 May 2025 09:24:22 -0400 Subject: [PATCH 29/72] Replace all `-F` usage with `-f` (#350) Co-authored-by: Gil Forsyth --- .github/workflows/project-get-item-id.yaml | 2 +- .../project-get-set-iteration-field.yaml | 10 +++--- .../project-get-set-single-select-field.yaml | 18 +++++----- .../project-set-text-date-numeric-field.yaml | 18 +++++----- .../project-update-linked-issues.yaml | 36 +++++++++---------- .pre-commit-config.yaml | 3 ++ 6 files changed, 45 insertions(+), 42 deletions(-) diff --git a/.github/workflows/project-get-item-id.yaml b/.github/workflows/project-get-item-id.yaml index d80926ee..155a8b07 100644 --- a/.github/workflows/project-get-item-id.yaml +++ b/.github/workflows/project-get-item-id.yaml @@ -51,7 +51,7 @@ jobs: # There's no graphQL filter configured to query by a specific project # So we need to query all projects and filter the result ourselves # shellcheck disable=SC2016 - gh api graphql -F nodeId="$ENV_ITEM_NODE_ID" -f query=' + gh api graphql -f nodeId="$ENV_ITEM_NODE_ID" -f query=' query($nodeId: ID!) { node(id: $nodeId) { ... on PullRequest { diff --git a/.github/workflows/project-get-set-iteration-field.yaml b/.github/workflows/project-get-set-iteration-field.yaml index 1e71e96f..4f0ece7f 100644 --- a/.github/workflows/project-get-set-iteration-field.yaml +++ b/.github/workflows/project-get-set-iteration-field.yaml @@ -70,7 +70,7 @@ jobs: # Get current iteration iteration id # The current iteration is always the first element in the returned list # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" -F fieldName="$ENV_ITERATION_FIELD_NAME" -f query=' + gh api graphql -f projectId="$ENV_PROJECT_ID" -f fieldName="$ENV_ITERATION_FIELD_NAME" -f query=' query($projectId: ID!, $fieldName: String!) { node(id: $projectId) { ... on ProjectV2 { @@ -106,10 +106,10 @@ jobs: ENV_ITERATION_OPTION_ID: ${{ steps.get_iteration_option_id.outputs.ITERATION_OPTION_ID }} run: | # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$ENV_ITEM_PROJECT_ID" \ - -F fieldId="$ENV_ITERATION_FIELD_ID" \ - -F iterationId="$ENV_ITERATION_OPTION_ID" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$ENV_ITEM_PROJECT_ID" \ + -f fieldId="$ENV_ITERATION_FIELD_ID" \ + -f iterationId="$ENV_ITERATION_OPTION_ID" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $iterationId: String!) { updateProjectV2ItemFieldValue( diff --git a/.github/workflows/project-get-set-single-select-field.yaml b/.github/workflows/project-get-set-single-select-field.yaml index 033d6210..6c3f7188 100644 --- a/.github/workflows/project-get-set-single-select-field.yaml +++ b/.github/workflows/project-get-set-single-select-field.yaml @@ -78,8 +78,8 @@ jobs: if [ -z "$ENV_SINGLE_SELECT_OPTION_VALUE" ]; then # No option specified, get first option in list # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ -f query=' query($projectId: ID!, $fieldName: String!) { node(id: $projectId) { @@ -95,9 +95,9 @@ jobs: else # Get specific value # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ - -F optionName="$ENV_SINGLE_SELECT_OPTION_VALUE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f fieldName="$ENV_SINGLE_SELECT_FIELD_NAME" \ + -f optionName="$ENV_SINGLE_SELECT_OPTION_VALUE" \ -f query=' query($projectId: ID!, $fieldName: String!, $optionName: String!) { node(id: $projectId) { @@ -128,10 +128,10 @@ jobs: ENV_SINGLE_SELECT_OPTION_ID: ${{ steps.get_single_select_option_id.outputs.SINGLE_SELECT_OPTION_ID }} run: | # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$ENV_ITEM_PROJECT_ID" \ - -F fieldId="$ENV_SINGLE_SELECT_FIELD_ID" \ - -F optionId="$ENV_SINGLE_SELECT_OPTION_ID" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$ENV_ITEM_PROJECT_ID" \ + -f fieldId="$ENV_SINGLE_SELECT_FIELD_ID" \ + -f optionId="$ENV_SINGLE_SELECT_OPTION_ID" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) { updateProjectV2ItemFieldValue( diff --git a/.github/workflows/project-set-text-date-numeric-field.yaml b/.github/workflows/project-set-text-date-numeric-field.yaml index 0bc48909..f2e486c8 100644 --- a/.github/workflows/project-set-text-date-numeric-field.yaml +++ b/.github/workflows/project-set-text-date-numeric-field.yaml @@ -66,11 +66,11 @@ jobs: # Set the field based on the inputted desired value if [ "$ENV_FIELD_TYPE" == "date" ] || [ "$ENV_FIELD_TYPE" == "text" ]; then # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$ENV_ITEM_PROJECT_ID" \ - -F fieldId="$ENV_FIELD_ID" \ - -F value="$ENV_SET_VALUE" \ - -F fieldType="$ENV_FIELD_TYPE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$ENV_ITEM_PROJECT_ID" \ + -f fieldId="$ENV_FIELD_ID" \ + -f value="$ENV_SET_VALUE" \ + -f fieldType="$ENV_FIELD_TYPE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: String!, $fieldType: String!) { updateProjectV2ItemFieldValue( @@ -89,10 +89,10 @@ jobs: elif [ "$ENV_FIELD_TYPE" == "number" ]; then # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$ENV_ITEM_PROJECT_ID" \ - -F fieldId="$ENV_FIELD_ID" \ - -F value="$ENV_SET_VALUE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$ENV_ITEM_PROJECT_ID" \ + -f fieldId="$ENV_FIELD_ID" \ + -f value="$ENV_SET_VALUE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: Float!) { updateProjectV2ItemFieldValue( diff --git a/.github/workflows/project-update-linked-issues.yaml b/.github/workflows/project-update-linked-issues.yaml index 4a8cbdd7..3f743c76 100644 --- a/.github/workflows/project-update-linked-issues.yaml +++ b/.github/workflows/project-update-linked-issues.yaml @@ -62,7 +62,7 @@ jobs: run: | # Find the linked issues to the PR # shellcheck disable=SC2016 - gh api graphql -F prNodeId="$ENV_PR_NODE_ID" -f query=' + gh api graphql -f prNodeId="$ENV_PR_NODE_ID" -f query=' query($prNodeId: ID!) { node(id: $prNodeId) { ... on PullRequest { @@ -103,10 +103,10 @@ jobs: case "$ENV_UPDATE_FIELD_TYPE" in "iteration") # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$issue_id" \ - -F fieldId="$ENV_UPDATE_FIELD_ID" \ - -F iterationId="$ENV_UPDATE_FIELD_VALUE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$issue_id" \ + -f fieldId="$ENV_UPDATE_FIELD_ID" \ + -f iterationId="$ENV_UPDATE_FIELD_VALUE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $iterationId: String!) { updateProjectV2ItemFieldValue( @@ -124,10 +124,10 @@ jobs: "single_select") # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$issue_id" \ - -F fieldId="$ENV_UPDATE_FIELD_ID" \ - -F optionId="$ENV_UPDATE_FIELD_VALUE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$issue_id" \ + -f fieldId="$ENV_UPDATE_FIELD_ID" \ + -f optionId="$ENV_UPDATE_FIELD_VALUE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) { updateProjectV2ItemFieldValue( @@ -145,11 +145,11 @@ jobs: "date"|"text") # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$issue_id" \ - -F fieldId="$ENV_UPDATE_FIELD_ID" \ - -F value="$ENV_UPDATE_FIELD_VALUE" \ - -F fieldType="$ENV_UPDATE_FIELD_TYPE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$issue_id" \ + -f fieldId="$ENV_UPDATE_FIELD_ID" \ + -f value="$ENV_UPDATE_FIELD_VALUE" \ + -f fieldType="$ENV_UPDATE_FIELD_TYPE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: String!, $fieldType: String!) { updateProjectV2ItemFieldValue( @@ -167,10 +167,10 @@ jobs: "number") # shellcheck disable=SC2016 - gh api graphql -F projectId="$ENV_PROJECT_ID" \ - -F itemId="$issue_id" \ - -F fieldId="$ENV_UPDATE_FIELD_ID" \ - -F value="$ENV_UPDATE_FIELD_VALUE" \ + gh api graphql -f projectId="$ENV_PROJECT_ID" \ + -f itemId="$issue_id" \ + -f fieldId="$ENV_UPDATE_FIELD_ID" \ + -f value="$ENV_UPDATE_FIELD_VALUE" \ -f query=' mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: Float!) { updateProjectV2ItemFieldValue( diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ce49e26..e07bc91d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,9 @@ --- # Copyright (c) 2025, NVIDIA CORPORATION. +ci: + skip: [actionlint-docker] + repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 From 2521df54a61064830d92fb7a93fc285521ce1810 Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Mon, 19 May 2025 22:53:53 +0000 Subject: [PATCH 30/72] Add back CUDA 11 jobs --- .github/workflows/conda-cpp-build.yaml | 2 ++ .github/workflows/conda-cpp-tests.yaml | 19 ++++++++++--------- .github/workflows/conda-python-build.yaml | 10 ++++++---- .github/workflows/conda-python-tests.yaml | 19 ++++++++++--------- .github/workflows/wheels-build.yaml | 10 ++++++---- .github/workflows/wheels-test.yaml | 16 ++++++++-------- 6 files changed, 42 insertions(+), 34 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 505a1711..778a015c 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -66,8 +66,10 @@ jobs: # export MATRIX=" # amd64 + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index b594dc44..a61a9233 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -81,20 +81,21 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index cd023f94..e17b0f74 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -66,17 +66,19 @@ jobs: # export MATRIX=" # amd64 + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 3f8246c0..64af1a1f 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -84,20 +84,21 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 2f05cb6b..9f13c8c4 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -107,17 +107,19 @@ jobs: # export MATRIX=" # amd64 + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index a1a418cb..29d74346 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -93,19 +93,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From 082830c9ca059e0b0a663eef01d3cdaf9a0ef666 Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Mon, 19 May 2025 23:04:34 +0000 Subject: [PATCH 31/72] Add back Python 3.13 --- .github/workflows/conda-cpp-tests.yaml | 10 +++++----- .github/workflows/conda-python-build.yaml | 4 ++++ .github/workflows/conda-python-tests.yaml | 12 ++++++------ .github/workflows/wheels-build.yaml | 4 ++++ .github/workflows/wheels-test.yaml | 4 ++-- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index a61a9233..4d999e43 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -82,16 +82,16 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index e17b0f74..96257106 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -72,6 +72,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -79,6 +81,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 64af1a1f..3f59f3e0 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -85,16 +85,16 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 9f13c8c4..e3701250 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -113,6 +113,8 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } @@ -120,6 +122,8 @@ jobs: - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 29d74346..603a6460 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -101,11 +101,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From 8a1d3b1b023a5092b1f2a0ffae2aa76f1577ea12 Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Mon, 19 May 2025 23:17:55 +0000 Subject: [PATCH 32/72] Switch to 25.06 matrices --- .github/workflows/conda-cpp-tests.yaml | 12 ++++++------ .github/workflows/conda-python-tests.yaml | 10 +++++----- .github/workflows/wheels-test.yaml | 12 ++++++------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 4d999e43..7d483816 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -82,20 +82,20 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 3f59f3e0..1b5aaa52 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -85,8 +85,8 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: @@ -94,11 +94,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 603a6460..fd10bc46 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -93,19 +93,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From 2f858a6bafd375bd495042f73c1669cc17aa4d48 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 20 May 2025 08:53:37 -0500 Subject: [PATCH 33/72] [pre-commit.ci] pre-commit autoupdate (#353) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e07bc91d..15f49717 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: actionlint-docker - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.9 + rev: v0.11.10 hooks: - id: ruff args: ["--fix"] From be881c8a487829d9493a4e8280a6e29d0323438d Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 20 May 2025 17:04:55 -0400 Subject: [PATCH 34/72] custom-job: deprecate 'run_script' input, in favor of 'script' (#357) --- .github/workflows/conda-cpp-build.yaml | 1 + .github/workflows/conda-cpp-tests.yaml | 1 + .github/workflows/conda-python-build.yaml | 1 + .github/workflows/conda-python-tests.yaml | 1 + .github/workflows/custom-job.yaml | 9 +++++++-- .github/workflows/wheels-build.yaml | 1 + .github/workflows/wheels-test.yaml | 1 + 7 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 778a015c..84cf5148 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -19,6 +19,7 @@ on: script: type: string default: "ci/build_cpp.sh" + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/build_cpp.sh'." upload-artifacts: type: boolean default: true diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 7d483816..13c6f820 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -21,6 +21,7 @@ on: script: type: string default: "ci/test_cpp.sh" + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_cpp.sh'." matrix_filter: type: string default: "." diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 96257106..339952e5 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -19,6 +19,7 @@ on: script: type: string default: "ci/build_python.sh" + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/build_python.sh'." upload-artifacts: type: boolean default: true diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 1b5aaa52..6a8bb6bc 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -21,6 +21,7 @@ on: script: type: string default: "ci/test_python.sh" + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_python.sh'." run_codecov: type: boolean default: true diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 0cfc51ba..f1ddbb48 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -23,8 +23,13 @@ on: type: string default: "rapidsai/ci-conda:latest" run_script: - required: true + required: false + type: string + description: "DEPRECATED - use 'script' instead" + script: + required: false type: string + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_java.sh'." file_to_upload: type: string default: "gh-status.json" @@ -99,7 +104,7 @@ jobs: echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" } >> "${GITHUB_ENV}" - name: Run script - run: ${{ inputs.run_script }} + run: ${{ inputs.script || inputs.run_script }} env: GH_TOKEN: ${{ github.token }} - name: Upload file to GitHub Artifact diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index e3701250..e9fb47e3 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -19,6 +19,7 @@ on: script: required: true type: string + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/build_wheel.sh'." package-name: required: true type: string diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index fd10bc46..4375385c 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -24,6 +24,7 @@ on: script: type: string default: "ci/test_wheel.sh" + description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_wheel.sh'." matrix_filter: type: string default: "." From 0760c7df10cf800e0c4e4f51dde497c50e07b52d Mon Sep 17 00:00:00 2001 From: Ben Jarmak <104460670+jarmak-nv@users.noreply.github.com> Date: Wed, 21 May 2025 09:38:08 -0400 Subject: [PATCH 35/72] fix: update jq command to remove `exit 4` errors when there is no linked issue (#359) --- .github/workflows/project-update-linked-issues.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/project-update-linked-issues.yaml b/.github/workflows/project-update-linked-issues.yaml index 3f743c76..80979a95 100644 --- a/.github/workflows/project-update-linked-issues.yaml +++ b/.github/workflows/project-update-linked-issues.yaml @@ -83,7 +83,7 @@ jobs: }' > linked_issues.json # Use jq with proper variable handling to get issue IDs - issue_ids=$(jq --exit-status --arg project_id "$ENV_PROJECT_ID" -r ' + issue_ids=$(jq --arg project_id "$ENV_PROJECT_ID" -r ' .data.node.closingIssuesReferences.nodes[].projectItems.nodes[] | select(.project.id == $project_id) | .id' linked_issues.json) From efdb3a9319fce50f2022b6094bc91c1d2aef9078 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 23 May 2025 08:44:08 -0400 Subject: [PATCH 36/72] make 'script' input required (#362) --- .github/workflows/conda-cpp-build.yaml | 2 +- .github/workflows/conda-cpp-tests.yaml | 2 +- .github/workflows/conda-python-build.yaml | 2 +- .github/workflows/conda-python-tests.yaml | 2 +- .github/workflows/wheels-test.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 84cf5148..4af38286 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -18,7 +18,7 @@ on: default: "cpu8" script: type: string - default: "ci/build_cpp.sh" + required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/build_cpp.sh'." upload-artifacts: type: boolean diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 13c6f820..c754b543 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -20,7 +20,7 @@ on: type: string script: type: string - default: "ci/test_cpp.sh" + required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_cpp.sh'." matrix_filter: type: string diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 339952e5..67d94948 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -18,7 +18,7 @@ on: default: "cpu8" script: type: string - default: "ci/build_python.sh" + required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/build_python.sh'." upload-artifacts: type: boolean diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 6a8bb6bc..dffd3e81 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -20,7 +20,7 @@ on: type: string script: type: string - default: "ci/test_python.sh" + required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_python.sh'." run_codecov: type: boolean diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 4375385c..58c4ddb2 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -23,7 +23,7 @@ on: default: "auto" script: type: string - default: "ci/test_wheel.sh" + required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_wheel.sh'." matrix_filter: type: string From 50eec3917e8db2b69b9608309b1f5255d6016b38 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 23 May 2025 15:19:08 -0400 Subject: [PATCH 37/72] print GitHub API rate limit information to logs (#366) --- .github/workflows/conda-cpp-build.yaml | 11 +++++++++++ .github/workflows/conda-cpp-post-build-checks.yaml | 11 +++++++++++ .github/workflows/conda-cpp-tests.yaml | 11 +++++++++++ .github/workflows/conda-python-build.yaml | 11 +++++++++++ .github/workflows/conda-python-tests.yaml | 11 +++++++++++ .github/workflows/conda-upload-packages.yaml | 11 +++++++++++ .github/workflows/custom-job.yaml | 11 +++++++++++ .github/workflows/wheels-build.yaml | 11 +++++++++++ .github/workflows/wheels-publish.yaml | 12 ++++++++++++ .github/workflows/wheels-test.yaml | 12 ++++++++++++ 10 files changed, 112 insertions(+) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 4af38286..7e94010b 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -131,6 +131,17 @@ jobs: with: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: C++ build run: ${{ inputs.script }} env: diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 3d44a77a..38b96cf7 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -75,6 +75,17 @@ jobs: echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" } >> "${GITHUB_ENV}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Download conda C++ build artifacts env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index c754b543..a4e40abf 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -173,6 +173,17 @@ jobs: uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: C++ tests run: ${{ inputs.script }} env: diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 67d94948..ee741381 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -136,6 +136,17 @@ jobs: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Python build run: ${{ inputs.script }} env: diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index dffd3e81..3ac266b7 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -178,6 +178,17 @@ jobs: uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Python tests run: ${{ inputs.script }} env: diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index 6b8086b6..d2841cab 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -75,6 +75,17 @@ jobs: echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" } >> "${GITHUB_ENV}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Set Proper Conda Upload Token run: | RAPIDS_CONDA_TOKEN=${{ secrets.CONDA_RAPIDSAI_NIGHTLY_TOKEN }} diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index f1ddbb48..b3772b9d 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -103,6 +103,17 @@ jobs: echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" } >> "${GITHUB_ENV}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Run script run: ${{ inputs.script || inputs.run_script }} env: diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index e9fb47e3..2de226c7 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -197,6 +197,17 @@ jobs: with: extra_attributes: "rapids.PACKAGER=wheel,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} - name: Build and repair the wheel run: | ${{ inputs.script }} diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 868cc8d1..9df22878 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -86,6 +86,18 @@ jobs: date: ${{ inputs.date }} sha: ${{ inputs.sha }} + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} + - name: Download wheels from artifact storage and publish to anaconda repository run: rapids-wheels-anaconda "${{ inputs.package-name }}" "${{ inputs.package-type }}" env: diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 58c4ddb2..8fe061de 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -181,6 +181,18 @@ jobs: uses: nv-gha-runners/setup-proxy-cache@main continue-on-error: true + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, + # checking '/rate_limit | jq .' should not itself count against any rate limits. + - name: Check GitHub API rate limits + run: | + if ! type gh >/dev/null; then + echo "'gh' CLI is not installed... skipping rate-limits check" + else + gh api /rate_limit | jq . + fi + env: + GH_TOKEN: ${{ github.token }} + - name: Run tests run: ${{ inputs.script }} env: From 4bf94447dd66683d8e33c4212dab35a6aa8e2cd8 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 27 May 2025 09:07:45 -0500 Subject: [PATCH 38/72] remove 'run_script' input from custom-job (#363) --- .github/workflows/custom-job.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index b3772b9d..1085590d 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -22,10 +22,6 @@ on: container_image: type: string default: "rapidsai/ci-conda:latest" - run_script: - required: false - type: string - description: "DEPRECATED - use 'script' instead" script: required: false type: string @@ -115,7 +111,7 @@ jobs: env: GH_TOKEN: ${{ github.token }} - name: Run script - run: ${{ inputs.script || inputs.run_script }} + run: ${{ inputs.script }} env: GH_TOKEN: ${{ github.token }} - name: Upload file to GitHub Artifact From e62a069ab2266fa1508081ffff59869f68a78a33 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 27 May 2025 14:33:55 -0500 Subject: [PATCH 39/72] Use GitHub Actions artifacts in Anaconda uploads (#364) --- .github/workflows/conda-upload-packages.yaml | 9 +++------ .github/workflows/wheels-publish.yaml | 9 ++------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index d2841cab..e6c758a6 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -51,11 +51,7 @@ jobs: uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} - - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ vars.AWS_ROLE_ARN }} - aws-region: ${{ vars.AWS_REGION }} - role-duration-seconds: 43200 # 12h + - uses: actions/checkout@v4 with: repository: ${{ inputs.repo }} @@ -94,10 +90,11 @@ jobs: fi echo "RAPIDS_CONDA_TOKEN=${RAPIDS_CONDA_TOKEN}" >> "${GITHUB_ENV}" - name: Upload packages - run: rapids-upload-to-anaconda + run: rapids-upload-to-anaconda-github env: SKIP_UPLOAD_PKGS: ${{ inputs.skip_upload_pkgs }} RAPIDS_CONDA_UPLOAD_LABEL: ${{ inputs.upload_to_label }} + GH_TOKEN: ${{ github.token }} - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 9df22878..849bff54 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -59,12 +59,6 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ vars.AWS_ROLE_ARN }} - aws-region: ${{ vars.AWS_REGION }} - role-duration-seconds: 43200 # 12h - - name: checkout code repo uses: actions/checkout@v4 with: @@ -99,8 +93,9 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Download wheels from artifact storage and publish to anaconda repository - run: rapids-wheels-anaconda "${{ inputs.package-name }}" "${{ inputs.package-type }}" + run: rapids-wheels-anaconda-github "${{ inputs.package-name }}" "${{ inputs.package-type }}" env: + GH_TOKEN: ${{ github.token }} RAPIDS_CONDA_TOKEN: ${{ secrets.CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN }} - name: Check if build is release From 449b517c22de1d31dc6b8376661c2daadd9a749c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 09:35:05 -0500 Subject: [PATCH 40/72] [pre-commit.ci] pre-commit autoupdate (#368) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: James Lamb --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 15f49717..e12550ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: actionlint-docker - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.10 + rev: v0.11.11 hooks: - id: ruff args: ["--fix"] From cff1b661de797eb76ecd59a9b420a033dc851cf0 Mon Sep 17 00:00:00 2001 From: Jaya Venkatesh Date: Wed, 28 May 2025 11:31:58 -0700 Subject: [PATCH 41/72] Add 'build_workflow_name' input, to allow overriding where scripts look for artifacts (#331) Co-authored-by: James Lamb Co-authored-by: James Lamb --- .github/workflows/conda-cpp-tests.yaml | 24 ++++++++++++----------- .github/workflows/conda-python-tests.yaml | 24 ++++++++++++----------- .github/workflows/custom-job.yaml | 24 ++++++++++++----------- .github/workflows/wheels-test.yaml | 7 +++++++ 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index a4e40abf..c2d01414 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -29,6 +29,12 @@ on: required: false type: string default: "-e _NOOP" + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string defaults: run: @@ -157,17 +163,13 @@ jobs: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }},rapids.GPU=${{ matrix.GPU }},rapids.DRIVER=${{ matrix.DRIVER }},rapids.DEPENDENCIES=${{ matrix.DEPENDENCIES }}" - name: Standardize repository information - env: - RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} - RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} - RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} - run: | - { - echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" - echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" - echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" - } >> "${GITHUB_ENV}" + uses: rapidsai/shared-actions/rapids-github-info@main + with: + repo: ${{ inputs.repo }} + branch: ${{ inputs.branch }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} + build_workflow_name: ${{ inputs.build_workflow_name }} - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 3ac266b7..9e908aab 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -32,6 +32,12 @@ on: required: false type: string default: "-e _NOOP" + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string defaults: run: @@ -153,17 +159,13 @@ jobs: fetch-depth: 0 - name: Standardize repository information - env: - RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} - RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} - RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} - run: | - { - echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" - echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" - echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" - } >> "${GITHUB_ENV}" + uses: rapidsai/shared-actions/rapids-github-info@main + with: + repo: ${{ inputs.repo }} + branch: ${{ inputs.branch }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} + build_workflow_name: ${{ inputs.build_workflow_name }} # This has to be AFTER the checkout step. It creates a telemetry-artifacts directory, # and the checkout step would destroy it. diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 1085590d..43abbbcb 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -33,6 +33,12 @@ on: type: boolean required: false default: false + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string defaults: run: @@ -88,17 +94,13 @@ jobs: run: | echo "RAPIDS_BASE_BRANCH=${{ fromJSON(steps.get-pr-info.outputs.pr-info).base.ref }}" >> "${GITHUB_ENV}" - name: Standardize repository information - env: - RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} - RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} - RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} - run: | - { - echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" - echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" - echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" - } >> "${GITHUB_ENV}" + uses: rapidsai/shared-actions/rapids-github-info@main + with: + repo: ${{ inputs.repo }} + branch: ${{ inputs.branch }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} + build_workflow_name: ${{ inputs.build_workflow_name }} # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. - name: Check GitHub API rate limits diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 8fe061de..7d45b984 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -41,6 +41,12 @@ on: required: false type: string default: '' + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string defaults: run: @@ -176,6 +182,7 @@ jobs: branch: ${{ inputs.branch }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} + build_workflow_name: ${{ inputs.build_workflow_name }} - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main From 253405749c9f3c86327e952eea5c2db0425357fb Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Thu, 29 May 2025 10:43:26 -0700 Subject: [PATCH 42/72] Drop CUDA 11 (#371) --- .github/workflows/conda-cpp-build.yaml | 2 -- .github/workflows/conda-cpp-tests.yaml | 9 ++++----- .github/workflows/conda-python-build.yaml | 8 -------- .github/workflows/conda-python-tests.yaml | 9 ++++----- .github/workflows/wheels-build.yaml | 8 -------- .github/workflows/wheels-test.yaml | 6 +++--- 6 files changed, 11 insertions(+), 31 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 7e94010b..6cb7f67e 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -67,10 +67,8 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index c2d01414..5db09001 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -88,20 +88,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index ee741381..2ecf8b30 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -67,22 +67,14 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 9e908aab..74e1dee2 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -91,20 +91,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 2de226c7..10ac676c 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -108,22 +108,14 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } " diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 7d45b984..ed226b64 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -102,15 +102,15 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " From 03ca80340d9983e54227f59f0a5e711b38439803 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 30 May 2025 13:58:32 -0500 Subject: [PATCH 43/72] Allow use of a different GitHub token from repo secrets (#370) --- .github/workflows/conda-cpp-build.yaml | 11 +++++++++-- .github/workflows/conda-cpp-tests.yaml | 11 +++++++++-- .github/workflows/conda-python-build.yaml | 11 +++++++++-- .github/workflows/conda-python-tests.yaml | 11 +++++++++-- .github/workflows/custom-job.yaml | 11 +++++++++-- .github/workflows/pr-builder.yaml | 16 ++++++++++++++++ .github/workflows/wheels-build.yaml | 17 ++++++++++++----- .github/workflows/wheels-test.yaml | 13 ++++++++++--- 8 files changed, 83 insertions(+), 18 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 6cb7f67e..1da2f6c6 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -28,6 +28,13 @@ on: matrix_filter: type: string default: "." + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -139,12 +146,12 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: C++ build run: ${{ inputs.script }} env: STEP_NAME: "C++ build" - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} run: | diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 5db09001..7ed7cab2 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -35,6 +35,13 @@ on: If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). required: false type: string + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -184,11 +191,11 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: C++ tests run: ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Generate test report uses: test-summary/action@v2.4 with: diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 2ecf8b30..821e2e67 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -28,6 +28,13 @@ on: matrix_filter: type: string default: "." + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -138,11 +145,11 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Python build run: ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} run: | diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 74e1dee2..513bd67d 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -38,6 +38,13 @@ on: If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). required: false type: string + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -189,11 +196,11 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Python tests run: ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Generate test report uses: test-summary/action@v2.4 with: diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 43abbbcb..8d40e8aa 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -39,6 +39,13 @@ on: If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). required: false type: string + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -111,11 +118,11 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Run script run: ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Upload file to GitHub Artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/pr-builder.yaml b/.github/workflows/pr-builder.yaml index b0b01721..51d19a94 100644 --- a/.github/workflows/pr-builder.yaml +++ b/.github/workflows/pr-builder.yaml @@ -15,3 +15,19 @@ jobs: env: NEEDS: ${{ inputs.needs }} run: jq -en 'env.NEEDS | fromjson | all(.result as $result | ["success", "skipped"] | any($result == .))' + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Check for private token usage + env: + ERROR_MSG: "PR validation failed: Private token access is not allowed to be merged onto the development branch. Remove any uses of input 'alternative-gh-token-secret-name'." + # The 'grep' call below is intentionally not using '-q' or redirecting to /dev/null. + # + # Those choices + the use of '-n' mean that the exact file path and line numbers of the offending uses + # will show up in logs. + run: | + if grep -n -R -E 'alternative\-gh\-token\-secret\-name\:' ./.github; then + echo "::error::$ERROR_MSG" + exit 1 + fi diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 10ac676c..28a772d9 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -54,21 +54,28 @@ on: default: true required: false description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" - - # Extra repository that will be cloned into the project directory. extra-repo: required: false type: string default: '' + description: "Extra repository that will be cloned into the project directory." extra-repo-sha: required: false type: string default: '' - # Note that this is the _name_ of a secret containing the key, not the key itself. + description: "Commit SHA in 'extra-repo' to clone." extra-repo-deploy-key: required: false type: string default: '' + description: "The _name_ of a secret containing a deploy key for 'extra-repo' (not the key itself)." + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -199,12 +206,12 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Build and repair the wheel run: | ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # Use a shell that loads the rc file so that we get the compiler settings shell: bash -leo pipefail {0} diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index ed226b64..c85754aa 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -36,17 +36,24 @@ on: required: false type: string default: "fail" - # Note that this is the _name_ of a secret containing the key, not the key itself. rapids-aux-secret-1: required: false type: string default: '' + description: "The name of an extra secret in the repo (not the content of the secret itself)." build_workflow_name: description: | Name of a workflow file that produced artifacts to be downloaded in this run. If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). required: false type: string + alternative-gh-token-secret-name: + type: string + required: false + description: | + If provided, should contain the name of a secret in the repo which holds a GitHub API token. + When this is non-empty, that secret's value is used in place of the default repo-level token + anywhere that environment variable GH_TOKEN is set. defaults: run: @@ -198,12 +205,12 @@ jobs: gh api /rate_limit | jq . fi env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Run tests run: ${{ inputs.script }} env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} RAPIDS_AUX_SECRET_1: ${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} - name: Generate test report From c802825f72402b09db3832ded051e5bab9a5d355 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 16:46:28 -0500 Subject: [PATCH 44/72] [pre-commit.ci] pre-commit autoupdate (#373) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e12550ae..99e6556b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: actionlint-docker - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.11 + rev: v0.11.12 hooks: - id: ruff args: ["--fix"] From 361a295ef89e4134ce62b5c916a50f48ca4c5462 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 4 Jun 2025 14:17:09 -0500 Subject: [PATCH 45/72] Drop Ubuntu 20.04 --- .github/workflows/conda-cpp-tests.yaml | 6 +++--- .github/workflows/conda-python-tests.yaml | 6 +++--- .github/workflows/wheels-test.yaml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 7ed7cab2..91a3e803 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -98,16 +98,16 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 513bd67d..c853b7af 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -101,16 +101,16 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index c85754aa..81853c2b 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -109,16 +109,16 @@ jobs: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " From 2ab9090c740ccabee7f26dfa1405a2416289aece Mon Sep 17 00:00:00 2001 From: Mike Sarahan Date: Fri, 6 Jun 2025 12:36:52 -0500 Subject: [PATCH 46/72] obviate telemetry download (#372) --- .github/workflows/build-in-devcontainer.yaml | 10 +++++++--- .github/workflows/changed-files.yaml | 8 ++++++-- .github/workflows/checks.yaml | 16 +++++++++++---- .github/workflows/conda-cpp-build.yaml | 20 +++++++++++++++---- .../conda-cpp-post-build-checks.yaml | 8 ++++++-- .github/workflows/conda-cpp-tests.yaml | 17 +++++++++++++--- .github/workflows/conda-python-build.yaml | 17 +++++++++++++--- .github/workflows/conda-python-tests.yaml | 17 +++++++++++++--- .github/workflows/conda-upload-packages.yaml | 8 ++++++-- .github/workflows/custom-job.yaml | 17 +++++++++++++--- .github/workflows/wheels-build.yaml | 17 +++++++++++++--- .github/workflows/wheels-publish.yaml | 8 ++++++-- .github/workflows/wheels-test.yaml | 17 +++++++++++++--- 13 files changed, 143 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index ce10680e..e7c1c778 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -79,9 +79,11 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} with: - extra_attributes: "rapids.PACKAGER=${{ matrix.PACKAGER }},rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.ARCH=${{ matrix.ARCH }}" + extra_attributes: "rapids.PACKAGER=${{ matrix.PACKAGER }},rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.ARCH=${{ matrix.ARCH }}" - name: Check if repo has devcontainer run: | @@ -156,4 +158,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/changed-files.yaml b/.github/workflows/changed-files.yaml index 2fe0492c..da5c54f2 100644 --- a/.github/workflows/changed-files.yaml +++ b/.github/workflows/changed-files.yaml @@ -50,7 +50,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - name: Get PR info id: get-pr-info uses: nv-gha-runners/get-pr-info@main @@ -89,4 +91,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 39301479..a65cdc43 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -49,7 +49,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - name: Get PR Info id: get-pr-info uses: nv-gha-runners/get-pr-info@main @@ -66,7 +68,9 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} check-style: if: ${{ inputs.enable_check_style }} @@ -81,7 +85,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - name: Get PR Info id: get-pr-info uses: nv-gha-runners/get-pr-info@main @@ -96,4 +102,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 1da2f6c6..3760cb5d 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -34,7 +34,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -132,12 +133,18 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} with: - extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" + extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" + # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -146,11 +153,13 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret-name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: C++ build run: ${{ inputs.script }} env: STEP_NAME: "C++ build" + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} @@ -175,4 +184,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 38b96cf7..997646c9 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -62,7 +62,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - name: Standardize repository information env: RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} @@ -112,4 +114,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 91a3e803..9affe55f 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -41,7 +41,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -164,9 +165,12 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1'}} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} with: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }},rapids.GPU=${{ matrix.GPU }},rapids.DRIVER=${{ matrix.DRIVER }},rapids.DEPENDENCIES=${{ matrix.DEPENDENCIES }}" + env: + # DOES NOT NEED alternative-gh-token-secret_name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} - name: Standardize repository information uses: rapidsai/shared-actions/rapids-github-info@main @@ -183,6 +187,8 @@ jobs: # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -191,10 +197,12 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: C++ tests run: ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Generate test report uses: test-summary/action@v2.4 @@ -207,4 +215,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 821e2e67..eb54bf53 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -34,7 +34,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -130,13 +131,18 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} with: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" - name: Setup proxy cache uses: nv-gha-runners/setup-proxy-cache@main # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -145,10 +151,12 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Python build run: ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} @@ -173,4 +181,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index c853b7af..9c77c21c 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -44,7 +44,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -178,7 +179,10 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} with: extra_attributes: "rapids.PACKAGER=conda,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }},rapids.GPU=${{ matrix.GPU }},rapids.DRIVER=${{ matrix.DRIVER }},rapids.DEPENDENCIES=${{ matrix.DEPENDENCIES }}" @@ -188,6 +192,8 @@ jobs: # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -196,10 +202,12 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Python tests run: ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Generate test report uses: test-summary/action@v2.4 @@ -223,4 +231,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index e6c758a6..da6de8c6 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -50,7 +50,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - uses: actions/checkout@v4 with: @@ -98,4 +100,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 8d40e8aa..d5161a47 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -45,7 +45,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -91,7 +92,10 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} - name: Get PR Info if: startsWith(github.ref_name, 'pull-request/') id: get-pr-info @@ -110,6 +114,8 @@ jobs: build_workflow_name: ${{ inputs.build_workflow_name }} # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -118,10 +124,12 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Run script run: ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Upload file to GitHub Artifact uses: actions/upload-artifact@v4 @@ -132,4 +140,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 28a772d9..3aefcec6 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -75,7 +75,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -192,12 +193,17 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} with: extra_attributes: "rapids.PACKAGER=wheel,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }}" # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -206,11 +212,13 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Build and repair the wheel run: | ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # Use a shell that loads the rc file so that we get the compiler settings shell: bash -leo pipefail {0} @@ -256,6 +264,9 @@ jobs: if: "!cancelled()" run: rapids-upload-artifacts-dir "cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch)_py${RAPIDS_PY_VERSION//.}" - name: Telemetry upload attributes - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 849bff54..402bc2f9 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -70,7 +70,9 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} - name: Standardize repository information uses: rapidsai/shared-actions/rapids-github-info@main @@ -119,4 +121,6 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 81853c2b..d3b7bbf8 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -53,7 +53,8 @@ on: description: | If provided, should contain the name of a secret in the repo which holds a GitHub API token. When this is non-empty, that secret's value is used in place of the default repo-level token - anywhere that environment variable GH_TOKEN is set. + anywhere that environment variable GH_TOKEN is set. This is especially useful for downloading + artifacts from other private repos, which repo tokens do not have access to. defaults: run: @@ -178,7 +179,10 @@ jobs: - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} with: extra_attributes: "rapids.PACKAGER=wheel,rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.PY_VER=${{ matrix.PY_VER }},rapids.ARCH=${{ matrix.ARCH }},rapids.LINUX_VER=${{ matrix.LINUX_VER }},rapids.GPU=${{ matrix.GPU }},rapids.DRIVER=${{ matrix.DRIVER }},rapids.DEPENDENCIES=${{ matrix.DEPENDENCIES }}" @@ -197,6 +201,8 @@ jobs: # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. + # + # gh CLI is pre-installed on Github-hosted runners, but may not be on self-hosted runners. - name: Check GitHub API rate limits run: | if ! type gh >/dev/null; then @@ -205,11 +211,13 @@ jobs: gh api /rate_limit | jq . fi env: + # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - name: Run tests run: ${{ inputs.script }} env: + # NEEDS alternative-gh-token-secret-name - may require a token with more permissions GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} RAPIDS_AUX_SECRET_1: ${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} @@ -226,4 +234,7 @@ jobs: - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true - if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }} + if: ${{ vars.TELEMETRY_ENABLED == 'true' }} + env: + # DOES NOT NEED alternative-gh-token-secret-name - github.token is enough and more limited + GH_TOKEN: ${{ github.token }} From 4938edbe643a056e943cb5e884dd0d52573db540 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:44:27 +0000 Subject: [PATCH 47/72] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.12 → v0.11.13](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.12...v0.11.13) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 99e6556b..ceba4e2a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: actionlint-docker - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.12 + rev: v0.11.13 hooks: - id: ruff args: ["--fix"] From b776780219f33314c69c76f071ce1f4a7b895d75 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 10 Jun 2025 16:50:43 -0500 Subject: [PATCH 48/72] add input descriptions: branch, date, sha, repo (#380) --- .github/workflows/build-in-devcontainer.yaml | 1 + .github/workflows/conda-cpp-build.yaml | 6 ++++++ .github/workflows/conda-cpp-post-build-checks.yaml | 6 ++++++ .github/workflows/conda-cpp-tests.yaml | 6 ++++++ .github/workflows/conda-python-build.yaml | 6 ++++++ .github/workflows/conda-python-tests.yaml | 6 ++++++ .github/workflows/conda-upload-packages.yaml | 6 ++++++ .github/workflows/custom-job.yaml | 6 ++++++ .github/workflows/wheels-build.yaml | 11 ++++++++--- .github/workflows/wheels-publish.yaml | 11 ++++++++--- .github/workflows/wheels-test.yaml | 11 ++++++++--- 11 files changed, 67 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index e7c1c778..4620833b 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -4,6 +4,7 @@ on: env: type: string sha: + description: "Full git commit SHA to check out" type: string arch: type: string diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 3760cb5d..958ae9ad 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -6,12 +6,18 @@ on: required: true type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string node_type: type: string diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 997646c9..07d4026d 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -6,12 +6,18 @@ on: required: true type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string enable_check_symbols: default: false diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index 9affe55f..f63000c5 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -11,12 +11,18 @@ on: type: string default: "auto" branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string script: type: string diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index eb54bf53..40b3cfe0 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -6,12 +6,18 @@ on: required: true type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string node_type: type: string diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 9c77c21c..1a1c4b04 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -11,12 +11,18 @@ on: type: string default: "auto" branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string script: type: string diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index da6de8c6..339bc70c 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -6,12 +6,18 @@ on: required: true type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string skip_upload_pkgs: type: string diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index d5161a47..932da4de 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -6,12 +6,18 @@ on: required: true type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" type: string repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string arch: type: string diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 3aefcec6..fb6f8bc8 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -3,14 +3,19 @@ name: Build RAPIDS wheels on: workflow_call: inputs: - # repo and branch - repo: - type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" + type: string + repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string build_type: description: "One of: [branch, nightly, pull-request]" diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 402bc2f9..6f3960f2 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -3,14 +3,19 @@ name: Publish RAPIDS wheels on: workflow_call: inputs: - # repo and branch - repo: - type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" + type: string + repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string build_type: description: "One of: [branch, nightly, pull-request]" diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index d3b7bbf8..c2345991 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -3,14 +3,19 @@ name: Test RAPIDS wheels on: workflow_call: inputs: - # repo and branch - repo: - type: string branch: + description: | + Git branch the workflow run targets. + This is required even when 'sha' is provided because it is also used for organizing artifacts. type: string date: + description: "Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds" type: string sha: + description: "Full git commit SHA to check out" + type: string + repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string build_type: description: "One of: [branch, nightly, pull-request]" From 732dd1fe81f331b56da0b2b209e05b1fba4614f1 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 17 Jun 2025 14:15:57 -0500 Subject: [PATCH 49/72] Version CI images. --- .github/workflows/checks.yaml | 4 ++-- .github/workflows/conda-cpp-build.yaml | 2 +- .github/workflows/conda-cpp-post-build-checks.yaml | 2 +- .github/workflows/conda-cpp-tests.yaml | 2 +- .github/workflows/conda-python-build.yaml | 2 +- .github/workflows/conda-python-tests.yaml | 2 +- .github/workflows/conda-upload-packages.yaml | 2 +- .github/workflows/custom-job.yaml | 2 +- .github/workflows/wheels-build.yaml | 2 +- .github/workflows/wheels-publish.yaml | 2 +- ci/release/update-version.sh | 3 +++ 11 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index a65cdc43..ce0d657e 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -40,7 +40,7 @@ jobs: other-checks: runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:latest + image: rapidsai/ci-conda:25.08-latest env: RAPIDS_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: @@ -76,7 +76,7 @@ jobs: if: ${{ inputs.enable_check_style }} runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:latest + image: rapidsai/ci-conda:25.08-latest steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 958ae9ad..cdde321d 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -103,7 +103,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 07d4026d..04a35a5c 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -50,7 +50,7 @@ jobs: if: ${{ inputs.enable_check_symbols }} runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-wheel:latest + image: rapidsai/ci-wheel:25.08-latest env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index f63000c5..be84aec2 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -149,7 +149,7 @@ jobs: RAPIDS_DEPENDENCIES: ${{ matrix.DEPENDENCIES }} RAPIDS_TESTS_DIR: ${{ github.workspace }}/test-results container: - image: rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} options: ${{ inputs.container-options }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 40b3cfe0..916d23a6 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -108,7 +108,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 1a1c4b04..89ca88e8 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -153,7 +153,7 @@ jobs: RAPIDS_DEPENDENCIES: ${{ matrix.DEPENDENCIES }} RAPIDS_TESTS_DIR: ${{ github.workspace }}/test-results container: - image: rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} options: ${{ inputs.container-options }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index 339bc70c..ac3b982c 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -49,7 +49,7 @@ jobs: upload: runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-conda:latest + image: rapidsai/ci-conda:25.08-latest env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 932da4de..9c8c8492 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -27,7 +27,7 @@ on: default: "cpu8" container_image: type: string - default: "rapidsai/ci-conda:latest" + default: "rapidsai/ci-conda:25.08-latest" script: required: false type: string diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index fb6f8bc8..e8cb50d7 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -147,7 +147,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: "rapidsai/ci-wheel:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-wheel:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 6f3960f2..49b2ad3b 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -60,7 +60,7 @@ jobs: container: # CUDA toolkit version of the container is irrelevant in the publish step. # This just uploads already-built wheels to remote storage. - image: "rapidsai/ci-wheel:latest" + image: "rapidsai/ci-wheel:25.08-latest" env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 4a4258b3..941a13ed 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -24,4 +24,7 @@ function sed_runner() { for FILE in .github/workflows/*.yaml; do sed_runner "/rapidsai\/shared-workflows/ s/@.*/@branch-${NEXT_SHORT_TAG}/g" "${FILE}" + + # Update CI image tags + sed_runner "/rapidsai\/ci-/ s/:[0-9\.]*-/:${NEXT_SHORT_TAG}-/g" "${FILE}" done From 1e3b13e116bab732c124ffd198351c58cc237446 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 17 Jun 2025 14:18:45 -0500 Subject: [PATCH 50/72] Missed citestwheel --- .github/workflows/wheels-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index c2345991..75edfbf8 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -159,7 +159,7 @@ jobs: matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} runs-on: "linux-${{ matrix.ARCH }}-gpu-${{ matrix.GPU }}-${{ matrix.DRIVER }}-1" container: - image: "rapidsai/citestwheel:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + image: "rapidsai/citestwheel:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" options: ${{ inputs.container-options }} env: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} # GPU jobs must set this container env variable From 2aec2713d9452c781d375051381f2421d7dd18cb Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 17 Jun 2025 14:22:17 -0500 Subject: [PATCH 51/72] Update update-version.sh --- ci/release/update-version.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 941a13ed..0fd20e86 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -26,5 +26,5 @@ for FILE in .github/workflows/*.yaml; do sed_runner "/rapidsai\/shared-workflows/ s/@.*/@branch-${NEXT_SHORT_TAG}/g" "${FILE}" # Update CI image tags - sed_runner "/rapidsai\/ci-/ s/:[0-9\.]*-/:${NEXT_SHORT_TAG}-/g" "${FILE}" + sed_runner "/rapidsai\/ci.*:[0-9\.]*-/ s/:[0-9\.]*-/:${NEXT_SHORT_TAG}-/g" "${FILE}" done From 52812af11bdac5bfc8b7fb40ab2f87b67701f057 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 24 Jun 2025 10:27:23 -0500 Subject: [PATCH 52/72] Update to CUDA 12.9.1. (#385) --- .github/workflows/conda-cpp-build.yaml | 4 ++-- .github/workflows/conda-cpp-tests.yaml | 6 +++--- .github/workflows/conda-python-build.yaml | 16 ++++++++-------- .github/workflows/conda-python-tests.yaml | 6 +++--- .github/workflows/wheels-build.yaml | 16 ++++++++-------- .github/workflows/wheels-test.yaml | 14 +++++++------- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index cdde321d..69cfe705 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -81,9 +81,9 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index be84aec2..b1ce95a5 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -103,7 +103,7 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: @@ -111,11 +111,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 916d23a6..b9be39e8 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -81,15 +81,15 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 89ca88e8..fd143605 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -106,7 +106,7 @@ jobs: pull-request: # amd64 - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: @@ -114,11 +114,11 @@ jobs: - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index e8cb50d7..c386a7cb 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -121,15 +121,15 @@ jobs: # export MATRIX=" # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8' } " MATRIX="$( diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 75edfbf8..9b7dcbb6 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -113,19 +113,19 @@ jobs: export MATRICES=" pull-request: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } nightly: # amd64 - - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu22.04', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } # arm64 - - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.0', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } + - { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.1', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.0', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', LINUX_VER: 'ubuntu24.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } " # only overwrite MATRIX_TYPE if it was set to 'auto' From d329cd0d429288ec65f777bf4c74898adf96857d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 14:09:44 -0500 Subject: [PATCH 53/72] [pre-commit.ci] pre-commit autoupdate (#383) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: James Lamb --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ceba4e2a..9a68ffce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,12 +17,12 @@ repos: hooks: - id: actionlint-docker - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.13 + rev: v0.12.0 hooks: - id: ruff args: ["--fix"] - id: ruff-format - repo: https://github.com/rapidsai/pre-commit-hooks - rev: v0.6.0 + rev: v0.7.0 hooks: - id: verify-copyright From d8f8b86ab5ad0b6bfd8bc622b62ead5507edac57 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 24 Jun 2025 15:13:38 -0500 Subject: [PATCH 54/72] remove ruff (#386) --- .pre-commit-config.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9a68ffce..24ef8654 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,12 +16,6 @@ repos: rev: v1.7.7 hooks: - id: actionlint-docker - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.0 - hooks: - - id: ruff - args: ["--fix"] - - id: ruff-format - repo: https://github.com/rapidsai/pre-commit-hooks rev: v0.7.0 hooks: From 86c81b17e9f198ff527d6b34f5adc2ce90ce7f5a Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 25 Jun 2025 12:14:46 -0500 Subject: [PATCH 55/72] conda-cpp-post-build-checks: switch to always running by default, add docs (#382) --- .github/workflows/conda-cpp-post-build-checks.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 04a35a5c..f4e1c091 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -20,10 +20,15 @@ on: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string enable_check_symbols: - default: false + default: true type: boolean required: false symbol_exclusions: + description: | + Regular expression matching unmangled symbol names to be ignored by this check. + Should be wrapped in '()' to form a capture group. + For example, to ignore any function symbols coming from the 'thrust' or 'cub' namespaces, + you might provide '(void (thrust::|cub::))'. type: string defaults: From 69caa9467b7cda31896564e48a3079d739096641 Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Wed, 2 Jul 2025 08:03:56 -0700 Subject: [PATCH 56/72] Upload sccache client logs (#389) --- .github/workflows/build-in-devcontainer.yaml | 23 ++++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 4620833b..e8d69e3c 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -121,6 +121,7 @@ jobs: env: | REPOSITORY=${{ env.REPOSITORY }} SCCACHE_REGION=${{ vars.AWS_REGION }} + SCCACHE_ERROR_LOG=/home/coder/${{ env.REPOSITORY }}/sccache.log AWS_ACCESS_KEY_ID=${{ env.AWS_ACCESS_KEY_ID }} AWS_SESSION_TOKEN=${{ env.AWS_SESSION_TOKEN }} AWS_SECRET_ACCESS_KEY=${{ env.AWS_SECRET_ACCESS_KEY }} @@ -133,13 +134,6 @@ jobs: ${{ inputs.env }} runCmd: | set -euo pipefail; - mkdir -p ~/.config/pip/; - cat <> ~/.config/pip/pip.conf - [global] - extra-index-url = https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - EOF - - rapids-make-${PYTHON_PACKAGE_MANAGER}-env; if test -n '${{ inputs.extra-repo-deploy-key }}' \ || test -n '${{ inputs.extra-repo-deploy-key-2 }}'; then @@ -153,9 +147,24 @@ jobs: devcontainer-utils-init-ssh-deploy-keys || true; fi + mkdir -p ~/.config/pip/; + cat <> ~/.config/pip/pip.conf + [global] + extra-index-url = https://pypi.anaconda.org/rapidsai-wheels-nightly/simple + EOF + + rapids-make-${PYTHON_PACKAGE_MANAGER}-env; + cd ~/"${REPOSITORY}"; mkdir -p telemetry-artifacts; ${{ inputs.build_command }} + - if: ${{ env.HAS_DEVCONTAINER == 'true' }} + name: Upload sccache logs + uses: actions/upload-artifact@v4 + with: + name: sccache-client-logs-cuda${{ matrix.CUDA_VER }}-${{ matrix.PACKAGER }}-${{ matrix.ARCH }}-${{ github.run_attempt }} + path: sccache*.log + compression-level: 9 - name: Telemetry upload attributes uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main continue-on-error: true From eb193cf0eece31c9169cfeb501e7c49f4f1b0fbd Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 2 Jul 2025 11:37:51 -0500 Subject: [PATCH 57/72] conda-cpp-post-build-checks: remove input 'enable_check_symbols' (#391) --- .github/workflows/conda-cpp-post-build-checks.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index f4e1c091..8b7b15fc 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -19,10 +19,6 @@ on: repo: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string - enable_check_symbols: - default: true - type: boolean - required: false symbol_exclusions: description: | Regular expression matching unmangled symbol names to be ignored by this check. @@ -52,7 +48,6 @@ permissions: jobs: check-symbols: - if: ${{ inputs.enable_check_symbols }} runs-on: linux-amd64-cpu4 container: image: rapidsai/ci-wheel:25.08-latest From a8fe84c8249ec3553f271fe8ed3b5247543b3561 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 3 Jul 2025 12:32:56 -0500 Subject: [PATCH 58/72] Add descriptions on all inputs (#387) Co-authored-by: Mike Sarahan --- .github/workflows/build-in-devcontainer.yaml | 36 ++++++++++++++++++-- .github/workflows/changed-files.yaml | 10 ++++++ .github/workflows/conda-cpp-build.yaml | 8 +++++ .github/workflows/conda-cpp-tests.yaml | 7 ++++ .github/workflows/conda-python-build.yaml | 8 +++++ .github/workflows/conda-python-tests.yaml | 7 ++++ .github/workflows/conda-upload-packages.yaml | 4 +++ .github/workflows/custom-job.yaml | 12 +++++++ .github/workflows/pr-builder.yaml | 3 ++ .github/workflows/wheels-build.yaml | 8 +++++ .github/workflows/wheels-publish.yaml | 4 ++- .github/workflows/wheels-test.yaml | 17 ++++++++- .pre-commit-config.yaml | 5 +++ 13 files changed, 124 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index e8d69e3c..f61a3a2b 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -2,42 +2,72 @@ on: workflow_call: inputs: env: + description: | + Additional environment variables to be set inside the devcontainer. + Should be a space-delimited string in the form "KEY=value". type: string sha: description: "Full git commit SHA to check out" type: string arch: + description: "One of [amd64, arm64]. CPU architecture to run on." type: string default: '["amd64"]' cuda: + description: | + Stringified JSON array of CUDA versions to run this workflow for. + This is used to select .devcontainer/ directories local to wherever this workflow is invoked from. + For example, if a repository has directories '.devcontainer/cuda12.0-pip/' and '.devcontainer/cuda12.8-pip/', + '["12.0", "12.8"]' could be passed here to build both of those devcontainers in CI. type: string default: '["12.0"]' python_package_manager: + description: | + Stringified JSON array of Python package managers to run devcontainer builds for. + One of: '["conda"]', '["pip"]', '["conda", "pip"]'. type: string default: '["conda", "pip"]' repo: + description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string timeout-minutes: + description: "Maximum time (in minutes) allowed for a run of this workflow." type: number default: 360 node_type: + description: | + Suffix, without leading '-', indicating the type of machine to run jobs on (e.g., 'cpu4' or 'gpu-l4-latest-1'). + Runner labels are of the form '{operating_system}-{arch}-{node_type}'. + See https://github.com/nv-gha-runners/enterprise-runner-configuration/blob/main/docs/runner-groups.md for a list + of valid values. type: string default: "cpu8" build_command: + description: | + Shell commands to run inside the devcontainer after it's built and started. + This is almost always some form of 'build-all --verbose;'. + See https://github.com/rapidsai/devcontainers for details. type: string required: true - # Note that this is the _name_ of a secret containing the key, not the key itself. extra-repo-deploy-key: + description: | + The NAME (not value) of a GitHub secret in the calling repo, containing a repo deploy key. + This is here to allow the use of additional private repos in runs of this workflow. required: false type: string default: '' - # Note that this is the _name_ of a secret containing the key, not the key itself. extra-repo-deploy-key-2: + description: | + The NAME (not value) of a GitHub secret in the calling repo, containing a repo deploy key. + This is here to allow the use of additional private repos in runs of this workflow. required: false type: string default: '' - # Note that this is the _name_ of a secret containing the key, not the key itself. rapids-aux-secret-1: + description: | + The NAME (not value) of a GitHub secret in the calling repo. + This allows callers of the workflow to make a single secret available in the devcontainer's + environment, via environment variable `RAPIDS_AUX_SECRET_1`. required: false type: string default: '' diff --git a/.github/workflows/changed-files.yaml b/.github/workflows/changed-files.yaml index da5c54f2..1de3c317 100644 --- a/.github/workflows/changed-files.yaml +++ b/.github/workflows/changed-files.yaml @@ -2,9 +2,19 @@ on: workflow_call: inputs: files_yaml: + description: | + YAML string containing mappings of the form `{key}: [{glob1}, {glob2}, etc.]`. + Where `{key}` is an arbitrary identifier for grouping a set of changed files + (e.g. "test_cpp" for "if these files change, C++ tests should be re-run") and + each `{glob}` is a glob expression matching file paths in the calling repo. + For example, "re-run all C++ tests on any changes EXCEPT docs" might look like this: + 'test_cpp: ["**", "!docs/**"]'. type: string required: true transform_expr: + description: | + jq expression for post-processing results to create this workflow's outputs. + Provided for backwards compatibility; should not need to be updated with normal use. type: string required: false default: | diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 69cfe705..7a81919b 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -20,6 +20,11 @@ on: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string node_type: + description: | + Suffix, without leading '-', indicating the type of machine to run jobs on (e.g., 'cpu4' or 'gpu-l4-latest-1'). + Runner labels are of the form '{operating_system}-{arch}-{node_type}'. + See https://github.com/nv-gha-runners/enterprise-runner-configuration/blob/main/docs/runner-groups.md for a list + of valid values. type: string default: "cpu8" script: @@ -32,6 +37,9 @@ on: required: false description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." alternative-gh-token-secret-name: diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index b1ce95a5..e6ab7ce9 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -29,9 +29,16 @@ on: required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_cpp.sh'." matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." container-options: + description: | + Command-line arguments passed to 'docker run' when starting the container this workflow runs in. + This should be provided as a single string to be inlined into 'docker run', not an array. + For example, '--quiet --ulimit nofile=2048'. required: false type: string default: "-e _NOOP" diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index b9be39e8..159fec1b 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -20,6 +20,11 @@ on: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string node_type: + description: | + Suffix, without leading '-', indicating the type of machine to run jobs on (e.g., 'cpu4' or 'gpu-l4-latest-1'). + Runner labels are of the form '{operating_system}-{arch}-{node_type}'. + See https://github.com/nv-gha-runners/enterprise-runner-configuration/blob/main/docs/runner-groups.md for a list + of valid values. type: string default: "cpu8" script: @@ -32,6 +37,9 @@ on: required: false description: "One of [true, false], true if artifacts should be uploaded to GitHub's artifact store" matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." alternative-gh-token-secret-name: diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index fd143605..f7bb6231 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -32,9 +32,16 @@ on: type: boolean default: true matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." container-options: + description: | + Command-line arguments passed to 'docker run' when starting the container this workflow runs in. + This should be provided as a single string to be inlined into 'docker run', not an array. + For example, '--quiet --ulimit nofile=2048'. required: false type: string default: "-e _NOOP" diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index ac3b982c..07761485 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -20,6 +20,10 @@ on: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string skip_upload_pkgs: + description: | + Space-delimited string of package names to skip uploading to anaconda.org. + When this is empty (the default), all conda packages found in CI artifacts for a given + run will be uploaded to anaconda.org type: string upload_to_label: description: The label that should be applied to packages uploaded to Anaconda.org diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 9c8c8492..5293565b 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -20,12 +20,19 @@ on: description: "Git repo to check out, in '{org}/{repo}' form, e.g. 'rapidsai/cudf'" type: string arch: + description: "One of [amd64, arm64]. CPU architecture to run on." type: string default: "amd64" node_type: + description: | + Suffix, without leading '-', indicating the type of machine to run jobs on (e.g., 'cpu4' or 'gpu-l4-latest-1'). + Runner labels are of the form '{operating_system}-{arch}-{node_type}'. + See https://github.com/nv-gha-runners/enterprise-runner-configuration/blob/main/docs/runner-groups.md for a list + of valid values. type: string default: "cpu8" container_image: + description: "Container image URI" type: string default: "rapidsai/ci-conda:25.08-latest" script: @@ -33,9 +40,14 @@ on: type: string description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_java.sh'." file_to_upload: + description: "Path to a file to be uploaded as a CI artifact." type: string default: "gh-status.json" continue-on-error: + description: | + If false (the default), treat job failures as workflow failures. + If true, job failures do not result in workflow failures (useful for implementing optional CI workflows). + See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error type: boolean required: false default: false diff --git a/.github/workflows/pr-builder.yaml b/.github/workflows/pr-builder.yaml index 51d19a94..7a8b862c 100644 --- a/.github/workflows/pr-builder.yaml +++ b/.github/workflows/pr-builder.yaml @@ -2,6 +2,9 @@ on: workflow_call: inputs: needs: + description: | + JSON string with the content of the 'needs' context for a GitHub Actions workflow. + For details, see https://docs.github.com/en/actions/reference/accessing-contextual-information-about-workflow-runs#example-contents-of-the-needs-context required: false type: string default: '{}' diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index c386a7cb..dffc79dc 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -46,12 +46,20 @@ on: # allow a bigger runner instance node_type: + description: | + Suffix, without leading '-', indicating the type of machine to run jobs on (e.g., 'cpu4' or 'gpu-l4-latest-1'). + Runner labels are of the form '{operating_system}-{arch}-{node_type}'. + See https://github.com/nv-gha-runners/enterprise-runner-configuration/blob/main/docs/runner-groups.md for a list + of valid values. required: false type: string default: "cpu16" # general settings matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." upload-artifacts: diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 49b2ad3b..22a05278 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -24,6 +24,8 @@ on: # general settings package-name: + description: | + Distribution name, without any other qualifiers (e.g. 'pylibcudf', not 'pylibcudf-cu12-cp311-manylinux_2_24_aarch64') required: true type: string package-type: @@ -32,7 +34,7 @@ on: default: python type: string publish_to_pypi: - required: false + description: "If true, the wheel will be published to pypi.org" type: boolean default: false diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index 9b7dcbb6..b5862e69 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -31,13 +31,25 @@ on: required: true description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_wheel.sh'." matrix_filter: + description: | + jq expression which modifies the matrix. + For example, 'map(select(.ARCH == "amd64"))' to achieve "only run amd64 jobs". type: string default: "." container-options: + description: | + Command-line arguments passed to 'docker run' when starting the container this workflow runs in. + This should be provided as a single string to be inlined into 'docker run', not an array. + For example, '--quiet --ulimit nofile=2048'. required: false type: string default: "-e _NOOP" test_summary_show: + description: | + Sets the 'show:' input to the test-summary/action third-party action. + The default, 'fail', means "only show failing tests in the summary in the GitHub UI". + See https://github.com/test-summary/action?tab=readme-ov-file#options for a list of + available options. required: false type: string default: "fail" @@ -45,7 +57,10 @@ on: required: false type: string default: '' - description: "The name of an extra secret in the repo (not the content of the secret itself)." + description: | + The NAME (not value) of a GitHub secret in the calling repo. + This allows callers of the workflow to make a single secret available in the job's + environment, via environment variable `RAPIDS_AUX_SECRET_1`. build_workflow_name: description: | Name of a workflow file that produced artifacts to be downloaded in this run. diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 24ef8654..fa1c2469 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,6 +16,11 @@ repos: rev: v1.7.7 hooks: - id: actionlint-docker + - repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + additional_dependencies: [tomli] - repo: https://github.com/rapidsai/pre-commit-hooks rev: v0.7.0 hooks: From 7a5f7118e536986065f5f6b2ceaef5ce5edc5f9f Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 16 Jul 2025 11:51:16 -0700 Subject: [PATCH 59/72] feat: add zizmor static action checks (#390) This is an experiment in using `zizmor` (https://docs.zizmor.sh/) to run static analysis on all of the shared workflow files. This seems like a nice tool to add, especially in this repository. Some of the classes of errors/warnings that are fixed here (and any associated configuration): ### unpinned-uses https://docs.zizmor.sh/audits/#unpinned-uses Any `uses:` mapping should pin to an exact hash to avoid things getting swapped out underneath. Since we deliberately make use of some of the `uses:` to reference our own `shared-workflows` and `nv-gha-runners` -- these are allowed to point at refs. Those patterns are configured in `.github/zizmor.yml` ### artipacked https://docs.zizmor.sh/audits/#artipacked We should always explicitly set `persist-credentials`, either to `true` or `false`. Everywhere that the `checkout` action has implicitly set it to `true`, I have made it an explicit `true`. I suspect some of these need to be true, but probably not all of them. I'll have to do some testing downstream to see which actions break when those secrets are disabled. ### overprovisioned-secrets https://docs.zizmor.sh/audits/#overprovisioned-secrets Looking up secrets like `secrets[some_key]` injects the entire secrets context into the runner, but I don't see a way around that for our current secret lookup patterns. I've just ignored these instances individually. ### unpinned-images https://docs.zizmor.sh/audits/#unpinned-images The only unpinned images belong to us and those have been individually allowlisted. ### template-injection https://docs.zizmor.sh/audits/#template-injection Generally speaking lines like `run: ${{ inputs.script }}` are susceptible to template injection. Also, that's the entire point of these lines, so they are individually allowlisted. For other potentially injectable lines, like `run: rapids-wheels-anaconda "${{ inputs.package-name }}" "${{ inputs.package-type }}" `, I've unpacked the inputs in to the environment and passed through those env-vars instead. In #351, @msarahan and @jameslamb and I determined that we can use full SHAs to specify the image to use for a given step, but leave a trailing same-line comment that points to the corresponding tag. That let's us use the more secure exact pin for the images that we don't control, but still keeps it human-readable and compatible with dependabot, e.g. ``` - uses: actions/checkout@def456 # v4.2.2 ``` --- .github/workflows/breaking-change-alert.yaml | 2 +- .github/workflows/build-in-devcontainer.yaml | 16 ++++++++++------ .github/workflows/checks.yaml | 7 +++++-- .github/workflows/conda-cpp-build.yaml | 13 ++++++++----- .../conda-cpp-post-build-checks.yaml | 6 ++++-- .github/workflows/conda-cpp-tests.yaml | 11 ++++++----- .github/workflows/conda-python-build.yaml | 13 ++++++++----- .github/workflows/conda-python-tests.yaml | 11 ++++++----- .github/workflows/conda-upload-packages.yaml | 4 ++-- .github/workflows/custom-job.yaml | 14 ++++++++------ .github/workflows/pr-builder.yaml | 1 + .../project-get-set-iteration-field.yaml | 3 ++- .../project-get-set-single-select-field.yaml | 3 ++- .../project-set-text-date-numeric-field.yaml | 3 ++- .github/workflows/wheels-build.yaml | 19 +++++++++++-------- .github/workflows/wheels-publish.yaml | 8 ++++++-- .github/workflows/wheels-test.yaml | 13 +++++++------ .github/zizmor.yml | 7 +++++++ .pre-commit-config.yaml | 6 ++++++ 19 files changed, 102 insertions(+), 58 deletions(-) create mode 100644 .github/zizmor.yml diff --git a/.github/workflows/breaking-change-alert.yaml b/.github/workflows/breaking-change-alert.yaml index 6c81c933..4df27965 100644 --- a/.github/workflows/breaking-change-alert.yaml +++ b/.github/workflows/breaking-change-alert.yaml @@ -124,7 +124,7 @@ jobs: fi - name: Send Slack notification - uses: slackapi/slack-github-action@v2.0.0 + uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 with: payload: | { diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index f61a3a2b..660b6958 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -104,6 +104,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true # This provides an initial set of metadata tags. Jobs are free to add to the RAPIDS_JOB_ATTRIBUTES # environment variable as they see fit - but remember to export the variable to ${GITHUB_ENV} @@ -117,15 +118,18 @@ jobs: extra_attributes: "rapids.PACKAGER=${{ matrix.PACKAGER }},rapids.CUDA_VER=${{ matrix.CUDA_VER }},rapids.ARCH=${{ matrix.ARCH }}" - name: Check if repo has devcontainer + env: + CUDA_VER: ${{ matrix.CUDA_VER }} + PACKAGER: ${{ matrix.PACKAGER }} run: | echo "REPOSITORY=$(basename "$(pwd)")" | tee -a "${GITHUB_ENV}" - if test -f .devcontainer/cuda${{ matrix.CUDA_VER }}-${{ matrix.PACKAGER }}/devcontainer.json; then + if test -f ".devcontainer/cuda${CUDA_VER}-${PACKAGER}/devcontainer.json"; then echo "HAS_DEVCONTAINER=true" >> "${GITHUB_ENV}" else echo "HAS_DEVCONTAINER=false" >> "${GITHUB_ENV}" fi - if: ${{ env.HAS_DEVCONTAINER == 'true' }} - uses: aws-actions/configure-aws-credentials@v4 + uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -142,7 +146,7 @@ jobs: - if: ${{ env.HAS_DEVCONTAINER == 'true' }} name: Run build in devcontainer - uses: devcontainers/ci@v0.3 + uses: devcontainers/ci@8bf61b26e9c3a98f69cb6ce2f88d24ff59b785c6 # v0.3.1900000417 with: push: never configFile: .devcontainer/cuda${{ matrix.CUDA_VER }}-${{ matrix.PACKAGER }}/devcontainer.json @@ -155,7 +159,7 @@ jobs: AWS_ACCESS_KEY_ID=${{ env.AWS_ACCESS_KEY_ID }} AWS_SESSION_TOKEN=${{ env.AWS_SESSION_TOKEN }} AWS_SECRET_ACCESS_KEY=${{ env.AWS_SECRET_ACCESS_KEY }} - RAPIDS_AUX_SECRET_1=${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} + RAPIDS_AUX_SECRET_1=${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} # zizmor: ignore[overprovisioned-secrets] TRACEPARENT=${{ env.TRACEPARENT }} OTEL_SERVICE_NAME=${{ env.OTEL_SERVICE_NAME }} OTEL_EXPORTER_OTLP_ENDPOINT=${{ env.OTEL_EXPORTER_OTLP_ENDPOINT }} @@ -169,10 +173,10 @@ jobs: || test -n '${{ inputs.extra-repo-deploy-key-2 }}'; then if ! pgrep ssh-agent >/dev/null 2>&1; then eval "$(ssh-agent -s)"; fi; if test -n '${{ inputs.extra-repo-deploy-key }}'; then - ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key] }}'; + ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key] }}'; # zizmor: ignore[overprovisioned-secrets] fi if test -n '${{ inputs.extra-repo-deploy-key-2 }}'; then - ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key-2] }}'; + ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key-2] }}'; # zizmor: ignore[overprovisioned-secrets] fi devcontainer-utils-init-ssh-deploy-keys || true; fi diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index ce0d657e..094869b4 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -40,12 +40,14 @@ jobs: other-checks: runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:25.08-latest + image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] env: RAPIDS_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout code uses: actions/checkout@v4 + with: + persist-credentials: true - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true @@ -76,12 +78,13 @@ jobs: if: ${{ inputs.enable_check_style }} runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:25.08-latest + image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 + persist-credentials: true - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 7a81919b..924c2000 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -115,7 +115,7 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -125,6 +125,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true - name: Standardize repository information env: RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} @@ -168,13 +169,13 @@ jobs: fi env: # NEEDS alternative-gh-token-secret-name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: C++ build - run: ${{ inputs.script }} + run: ${{ inputs.script }} # zizmor: ignore[template-injection] env: STEP_NAME: "C++ build" # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} run: | @@ -183,9 +184,11 @@ jobs: id: package-name - name: Show files to be uploaded if: ${{ inputs.upload-artifacts }} + env: + CONDA_OUTPUT_DIR: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} run: | echo "Contents of directory to be uploaded:" - ls -R ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} + ls -R "${CONDA_OUTPUT_DIR}" - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 8b7b15fc..99b9bf49 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -50,11 +50,11 @@ jobs: check-symbols: runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-wheel:25.08-latest + image: rapidsai/ci-wheel:25.08-latest # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -65,6 +65,7 @@ jobs: ref: ${{ inputs.sha }} path: "./src/" fetch-depth: 0 + persist-credentials: true - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true @@ -108,6 +109,7 @@ jobs: ref: refs/heads/main path: "./tool/" fetch-depth: 0 + persist-credentials: true - name: Verify CUDA libraries have no public kernel entry points env: SYMBOL_EXCLUSIONS: ${{ inputs.symbol_exclusions }} diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index e6ab7ce9..f22ee400 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -162,7 +162,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -173,6 +173,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true # This has to be AFTER the checkout step. It creates a telemetry-artifacts directory, # and the checkout step would destroy it. - name: Telemetry setup @@ -211,14 +212,14 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: C++ tests - run: ${{ inputs.script }} + run: ${{ inputs.script }} # zizmor: ignore[template-injection] env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Generate test report - uses: test-summary/action@v2.4 + uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 # v2.4 with: paths: "${{ env.RAPIDS_TESTS_DIR }}/*.xml" if: always() diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 159fec1b..9e32e3df 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -120,7 +120,7 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -130,6 +130,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true - name: Standardize repository information env: RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} @@ -166,12 +167,12 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Python build - run: ${{ inputs.script }} + run: ${{ inputs.script }} # zizmor: ignore[template-injection] env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Get Package Name and Location if: ${{ inputs.upload-artifacts }} run: | @@ -180,9 +181,11 @@ jobs: id: package-name - name: Show files to be uploaded if: ${{ inputs.upload-artifacts }} + env: + CONDA_OUTPUT_DIR: ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} run: | echo "Contents of directory to be uploaded:" - ls -R ${{ steps.package-name.outputs.CONDA_OUTPUT_DIR }} + ls -R "${CONDA_OUTPUT_DIR}" - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} with: diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index f7bb6231..54b9005a 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -166,7 +166,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -177,6 +177,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true - name: Standardize repository information uses: rapidsai/shared-actions/rapids-github-info@main @@ -216,14 +217,14 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Python tests - run: ${{ inputs.script }} + run: ${{ inputs.script }} # zizmor: ignore[template-injection] env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Generate test report - uses: test-summary/action@v2.4 + uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 # v2.4 with: paths: "${{ env.RAPIDS_TESTS_DIR }}/*.xml" if: always() diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index 07761485..cc054082 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -53,7 +53,7 @@ jobs: upload: runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-conda:25.08-latest + image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: @@ -63,12 +63,12 @@ jobs: if: ${{ vars.TELEMETRY_ENABLED == 'true' }} env: GH_TOKEN: ${{ github.token }} - - uses: actions/checkout@v4 with: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true - name: Standardize repository information env: diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 5293565b..b82fa1b6 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -92,12 +92,12 @@ jobs: runs-on: "linux-${{ inputs.arch }}-${{ inputs.node_type }}" continue-on-error: ${{ inputs.continue-on-error }} container: - image: ${{ inputs.container_image }} + image: ${{ inputs.container_image }} # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -107,6 +107,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + persist-credentials: true - name: Telemetry setup uses: rapidsai/shared-actions/telemetry-dispatch-setup@main continue-on-error: true @@ -120,7 +121,7 @@ jobs: uses: nv-gha-runners/get-pr-info@main - name: Add PR Info if: startsWith(github.ref_name, 'pull-request/') - run: | + run: | # zizmor: ignore[template-injection] echo "RAPIDS_BASE_BRANCH=${{ fromJSON(steps.get-pr-info.outputs.pr-info).base.ref }}" >> "${GITHUB_ENV}" - name: Standardize repository information uses: rapidsai/shared-actions/rapids-github-info@main @@ -143,12 +144,13 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Run script - run: ${{ inputs.script }} + run: ${INPUTS_SCRIPT} env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] + INPUTS_SCRIPT: ${{ inputs.script }} - name: Upload file to GitHub Artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/pr-builder.yaml b/.github/workflows/pr-builder.yaml index 7a8b862c..80e77217 100644 --- a/.github/workflows/pr-builder.yaml +++ b/.github/workflows/pr-builder.yaml @@ -22,6 +22,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 1 + persist-credentials: false - name: Check for private token usage env: ERROR_MSG: "PR validation failed: Private token access is not allowed to be merged onto the development branch. Remove any uses of input 'alternative-gh-token-secret-name'." diff --git a/.github/workflows/project-get-set-iteration-field.yaml b/.github/workflows/project-get-set-iteration-field.yaml index 4f0ece7f..7c854c43 100644 --- a/.github/workflows/project-get-set-iteration-field.yaml +++ b/.github/workflows/project-get-set-iteration-field.yaml @@ -142,4 +142,5 @@ jobs: UPDATE_FIELD_TYPE: "iteration" UPDATE_FIELD_ID: ${{ inputs.ITERATION_FIELD_ID }} UPDATE_FIELD_VALUE: ${{ needs.get_set_iteration_option_id.outputs.ITERATION_OPTION_ID }} - secrets: inherit + secrets: + ADD_TO_PROJECT_GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_GITHUB_TOKEN }} diff --git a/.github/workflows/project-get-set-single-select-field.yaml b/.github/workflows/project-get-set-single-select-field.yaml index 6c3f7188..20841a7f 100644 --- a/.github/workflows/project-get-set-single-select-field.yaml +++ b/.github/workflows/project-get-set-single-select-field.yaml @@ -164,4 +164,5 @@ jobs: UPDATE_FIELD_TYPE: "single_select" UPDATE_FIELD_ID: ${{ inputs.SINGLE_SELECT_FIELD_ID }} UPDATE_FIELD_VALUE: ${{ needs.get_set_single_select_option_id.outputs.SINGLE_SELECT_OPTION_ID }} - secrets: inherit + secrets: + ADD_TO_PROJECT_GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_GITHUB_TOKEN }} diff --git a/.github/workflows/project-set-text-date-numeric-field.yaml b/.github/workflows/project-set-text-date-numeric-field.yaml index f2e486c8..2df3aa46 100644 --- a/.github/workflows/project-set-text-date-numeric-field.yaml +++ b/.github/workflows/project-set-text-date-numeric-field.yaml @@ -134,4 +134,5 @@ jobs: UPDATE_FIELD_TYPE: ${{inputs.FIELD_TYPE}} UPDATE_FIELD_ID: ${{ inputs.FIELD_ID }} UPDATE_FIELD_VALUE: ${{ inputs.SET_VALUE }} - secrets: inherit + secrets: + ADD_TO_PROJECT_GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_GITHUB_TOKEN }} diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index dffc79dc..1689ffac 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -160,7 +160,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -185,8 +185,10 @@ jobs: - name: Preprocess extra repos id: preprocess-extras if: ${{ inputs.extra-repo != '' }} + env: + EXTRA_REPO: ${{ inputs.extra-repo }} run: | - EXTRA_REPO_PATH=$(echo ${{ inputs.extra-repo }} | cut -d "/" -f 2) + EXTRA_REPO_PATH=$(echo "$EXTRA_REPO" | cut -d "/" -f 2) echo "EXTRA_REPO_PATH=${EXTRA_REPO_PATH}" >> "${GITHUB_OUTPUT}" - name: checkout extra repos @@ -196,7 +198,7 @@ jobs: repository: ${{ inputs.extra-repo }} ref: ${{ inputs.extra-repo-sha }} path: "./${{ steps.preprocess-extras.outputs.EXTRA_REPO_PATH }}" - ssh-key: ${{ secrets[inputs.extra-repo-deploy-key] }} + ssh-key: ${{ secrets[inputs.extra-repo-deploy-key] }} # zizmor: ignore[overprovisioned-secrets] persist-credentials: false - name: Setup proxy cache @@ -226,13 +228,12 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Build and repair the wheel - run: | - ${{ inputs.script }} + run: ${{ inputs.script }} # zizmor: ignore[template-injection] env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] # Use a shell that loads the rc file so that we get the compiler settings shell: bash -leo pipefail {0} @@ -262,9 +263,11 @@ jobs: - name: Show files to be uploaded if: ${{ inputs.upload-artifacts }} + env: + WHEEL_OUTPUT_DIR: ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} run: | echo "Contents of directory to be uploaded:" - ls -R ${{ steps.package-name.outputs.WHEEL_OUTPUT_DIR }} + ls -R "$WHEEL_OUTPUT_DIR" - uses: actions/upload-artifact@v4 if: ${{ inputs.upload-artifacts }} diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 22a05278..867a38b1 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -62,7 +62,7 @@ jobs: container: # CUDA toolkit version of the container is irrelevant in the publish step. # This just uploads already-built wheels to remote storage. - image: "rapidsai/ci-wheel:25.08-latest" + image: "rapidsai/ci-wheel:25.08-latest" # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: @@ -102,10 +102,14 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Download wheels from artifact storage and publish to anaconda repository - run: rapids-wheels-anaconda-github "${{ inputs.package-name }}" "${{ inputs.package-type }}" + run: rapids-wheels-anaconda-github "${INPUTS_PACKAGE_NAME}" "${INPUTS_PACKAGE_TYPE}" env: GH_TOKEN: ${{ github.token }} RAPIDS_CONDA_TOKEN: ${{ secrets.CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN }} + PACKAGENAME: ${{ inputs.package-name }} + PACKAGETYPE: ${{ inputs.package-type }} + INPUTS_PACKAGE_NAME: ${{ inputs.package-name }} + INPUTS_PACKAGE_TYPE: ${{ inputs.package-type }} - name: Check if build is release id: check_if_release diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index b5862e69..cf52c788 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -180,7 +180,7 @@ jobs: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} # GPU jobs must set this container env variable RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} @@ -232,17 +232,18 @@ jobs: fi env: # NEEDS alternative-gh-token-secret_name - API limits need to be for whatever token is used for upload/download. Repo token may be a different pool for rate limits. - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] - name: Run tests - run: ${{ inputs.script }} + run: ${INPUTS_SCRIPT} env: # NEEDS alternative-gh-token-secret-name - may require a token with more permissions - GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} - RAPIDS_AUX_SECRET_1: ${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} + GH_TOKEN: ${{ inputs.alternative-gh-token-secret-name && secrets[inputs.alternative-gh-token-secret-name] || github.token }} # zizmor: ignore[overprovisioned-secrets] + RAPIDS_AUX_SECRET_1: ${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} # zizmor: ignore[overprovisioned-secrets] + INPUTS_SCRIPT: ${{ inputs.script }} - name: Generate test report - uses: test-summary/action@v2.4 + uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 # v2.4 with: paths: "${{ env.RAPIDS_TESTS_DIR }}/*.xml" show: ${{ inputs.test_summary_show }} diff --git a/.github/zizmor.yml b/.github/zizmor.yml new file mode 100644 index 00000000..d7371b03 --- /dev/null +++ b/.github/zizmor.yml @@ -0,0 +1,7 @@ +rules: + unpinned-uses: + config: + policies: + rapidsai/shared-actions/*: ref-pin + nv-gha-runners/*: ref-pin + actions/*: ref-pin diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fa1c2469..086b465c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,3 +25,9 @@ repos: rev: v0.7.0 hooks: - id: verify-copyright + - repo: https://github.com/zizmorcore/zizmor-pre-commit + # Zizmor version. + rev: v1.7.0 + hooks: + # Run the linter. + - id: zizmor From 5973ed6605aba3917ed48e7b578a1c523497a3e8 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 16 Jul 2025 14:20:03 -0500 Subject: [PATCH 60/72] custom-job: make artifact name customizable (#393) Co-authored-by: Gil Forsyth --- .github/workflows/custom-job.yaml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index b82fa1b6..f675fb3a 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -40,9 +40,18 @@ on: type: string description: "Shell code to be executed in a step. Ideally this should just invoke a script managed in the repo the workflow runs from, like 'ci/test_java.sh'." file_to_upload: - description: "Path to a file to be uploaded as a CI artifact." + description: | + Path to file(s) to be uploaded as a CI artifact. + If a directory is provided, all files in it will be bundled into a zip archive. + See 'path' input at https://github.com/actions/upload-artifact?tab=readme-ov-file#inputs type: string default: "gh-status.json" + artifact-name: + description: | + Identifier for the GitHub Actions artifact created by uploading ``file_to_upload``. + See 'name' input at https://github.com/actions/upload-artifact?tab=readme-ov-file#inputs + type: string + default: "result" continue-on-error: description: | If false (the default), treat job failures as workflow failures. @@ -154,7 +163,7 @@ jobs: - name: Upload file to GitHub Artifact uses: actions/upload-artifact@v4 with: - name: result + name: ${{ inputs.artifact-name }} path: ${{ inputs.file_to_upload }} if-no-files-found: ignore - name: Telemetry upload attributes From 2905048534730941f0dcae31dc3b9f0fd3bdbd26 Mon Sep 17 00:00:00 2001 From: Jake Awe Date: Thu, 17 Jul 2025 12:37:06 -0700 Subject: [PATCH 61/72] DOC v25.10 Updates [skip ci] --- .github/workflows/checks.yaml | 4 ++-- .github/workflows/conda-cpp-build.yaml | 2 +- .github/workflows/conda-cpp-post-build-checks.yaml | 2 +- .github/workflows/conda-cpp-tests.yaml | 2 +- .github/workflows/conda-python-build.yaml | 2 +- .github/workflows/conda-python-tests.yaml | 2 +- .github/workflows/conda-upload-packages.yaml | 2 +- .github/workflows/custom-job.yaml | 2 +- .github/workflows/wheels-build.yaml | 2 +- .github/workflows/wheels-publish.yaml | 2 +- .github/workflows/wheels-test.yaml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 094869b4..2a97a599 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -40,7 +40,7 @@ jobs: other-checks: runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] + image: rapidsai/ci-conda:25.10-latest # zizmor: ignore[unpinned-images] env: RAPIDS_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: @@ -78,7 +78,7 @@ jobs: if: ${{ inputs.enable_check_style }} runs-on: ubuntu-latest container: - image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] + image: rapidsai/ci-conda:25.10-latest # zizmor: ignore[unpinned-images] steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 924c2000..4ac10170 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -111,7 +111,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 99b9bf49..9ac95308 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -50,7 +50,7 @@ jobs: check-symbols: runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-wheel:25.08-latest # zizmor: ignore[unpinned-images] + image: rapidsai/ci-wheel:25.10-latest # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index f22ee400..b74b5a6e 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -156,7 +156,7 @@ jobs: RAPIDS_DEPENDENCIES: ${{ matrix.DEPENDENCIES }} RAPIDS_TESTS_DIR: ${{ github.workspace }}/test-results container: - image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} options: ${{ inputs.container-options }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 9e32e3df..6ef135dc 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -116,7 +116,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 54b9005a..21e36e0b 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -160,7 +160,7 @@ jobs: RAPIDS_DEPENDENCIES: ${{ matrix.DEPENDENCIES }} RAPIDS_TESTS_DIR: ${{ github.workspace }}/test-results container: - image: rapidsai/ci-conda:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} + image: rapidsai/ci-conda:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} options: ${{ inputs.container-options }} env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index cc054082..560f1602 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -53,7 +53,7 @@ jobs: upload: runs-on: linux-amd64-cpu4 container: - image: rapidsai/ci-conda:25.08-latest # zizmor: ignore[unpinned-images] + image: rapidsai/ci-conda:25.10-latest # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index f675fb3a..3f97baf5 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -34,7 +34,7 @@ on: container_image: description: "Container image URI" type: string - default: "rapidsai/ci-conda:25.08-latest" + default: "rapidsai/ci-conda:25.10-latest" script: required: false type: string diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index 1689ffac..bdd9e52a 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -155,7 +155,7 @@ jobs: env: RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts container: - image: "rapidsai/ci-wheel:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-wheel:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 867a38b1..8907a34a 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -62,7 +62,7 @@ jobs: container: # CUDA toolkit version of the container is irrelevant in the publish step. # This just uploads already-built wheels to remote storage. - image: "rapidsai/ci-wheel:25.08-latest" # zizmor: ignore[unpinned-images] + image: "rapidsai/ci-wheel:25.10-latest" # zizmor: ignore[unpinned-images] env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index cf52c788..e7f56708 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -174,7 +174,7 @@ jobs: matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} runs-on: "linux-${{ matrix.ARCH }}-gpu-${{ matrix.GPU }}-${{ matrix.DRIVER }}-1" container: - image: "rapidsai/citestwheel:25.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + image: "rapidsai/citestwheel:25.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" options: ${{ inputs.container-options }} env: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} # GPU jobs must set this container env variable From 5492c013caa6c3cfc4e7ad696fd622c359731f09 Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Mon, 21 Jul 2025 10:07:14 -0400 Subject: [PATCH 62/72] ci: prevent renovate from incorrectly bumping rapidsai docker images (#396) --- renovate.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 4bd832f5..c02dfddf 100644 --- a/renovate.json +++ b/renovate.json @@ -1,4 +1,10 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base"] + "extends": ["config:base"], + "packageRules": [ + { + "matchPackagePatterns": ["^rapidsai/"], + "enabled": false + } + ] } From c08ddac1ee2d6dbb17017b4dc9839de551fa7abd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 16:11:19 -0400 Subject: [PATCH 63/72] [pre-commit.ci] pre-commit autoupdate (#398) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 086b465c..528ee5d4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,7 +27,7 @@ repos: - id: verify-copyright - repo: https://github.com/zizmorcore/zizmor-pre-commit # Zizmor version. - rev: v1.7.0 + rev: v1.11.0 hooks: # Run the linter. - id: zizmor From 93f28358a5e85ec83f85e68db87c25978d028eb0 Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:42:11 -0700 Subject: [PATCH 64/72] Always upload sccache logs in `build-in-devcontainer.yaml` Upload sccache client logs on success and failure, except when the workflow is cancelled. --- .github/workflows/build-in-devcontainer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 660b6958..125d4823 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -192,7 +192,7 @@ jobs: cd ~/"${REPOSITORY}"; mkdir -p telemetry-artifacts; ${{ inputs.build_command }} - - if: ${{ env.HAS_DEVCONTAINER == 'true' }} + - if: ${{ !cancelled() && env.HAS_DEVCONTAINER == 'true' }} name: Upload sccache logs uses: actions/upload-artifact@v4 with: From 4ea14168fb53432f96baa8f1f5c2c78055cbcb61 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 22 Jul 2025 14:26:29 -0700 Subject: [PATCH 65/72] fix zizmor comment --- .github/workflows/build-in-devcontainer.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 125d4823..1dc2c197 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -159,7 +159,11 @@ jobs: AWS_ACCESS_KEY_ID=${{ env.AWS_ACCESS_KEY_ID }} AWS_SESSION_TOKEN=${{ env.AWS_SESSION_TOKEN }} AWS_SECRET_ACCESS_KEY=${{ env.AWS_SECRET_ACCESS_KEY }} - RAPIDS_AUX_SECRET_1=${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} # zizmor: ignore[overprovisioned-secrets] + RAPIDS_AUX_SECRET_1=${{ + inputs.rapids-aux-secret-1 != '' + && secrets[inputs.rapids-aux-secret-1] # zizmor: ignore[overprovisioned-secrets] + || '' + }} TRACEPARENT=${{ env.TRACEPARENT }} OTEL_SERVICE_NAME=${{ env.OTEL_SERVICE_NAME }} OTEL_EXPORTER_OTLP_ENDPOINT=${{ env.OTEL_EXPORTER_OTLP_ENDPOINT }} From e2d45d72a6d1dc054da77c8460a525f536701aa0 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 22 Jul 2025 15:00:57 -0700 Subject: [PATCH 66/72] disable zizmor for build-in-devcontainer.yaml --- .github/workflows/build-in-devcontainer.yaml | 10 +++------- .pre-commit-config.yaml | 4 ++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 1dc2c197..3dba8995 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -159,11 +159,7 @@ jobs: AWS_ACCESS_KEY_ID=${{ env.AWS_ACCESS_KEY_ID }} AWS_SESSION_TOKEN=${{ env.AWS_SESSION_TOKEN }} AWS_SECRET_ACCESS_KEY=${{ env.AWS_SECRET_ACCESS_KEY }} - RAPIDS_AUX_SECRET_1=${{ - inputs.rapids-aux-secret-1 != '' - && secrets[inputs.rapids-aux-secret-1] # zizmor: ignore[overprovisioned-secrets] - || '' - }} + RAPIDS_AUX_SECRET_1=${{ inputs.rapids-aux-secret-1 != '' && secrets[inputs.rapids-aux-secret-1] || '' }} TRACEPARENT=${{ env.TRACEPARENT }} OTEL_SERVICE_NAME=${{ env.OTEL_SERVICE_NAME }} OTEL_EXPORTER_OTLP_ENDPOINT=${{ env.OTEL_EXPORTER_OTLP_ENDPOINT }} @@ -177,10 +173,10 @@ jobs: || test -n '${{ inputs.extra-repo-deploy-key-2 }}'; then if ! pgrep ssh-agent >/dev/null 2>&1; then eval "$(ssh-agent -s)"; fi; if test -n '${{ inputs.extra-repo-deploy-key }}'; then - ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key] }}'; # zizmor: ignore[overprovisioned-secrets] + ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key] }}'; fi if test -n '${{ inputs.extra-repo-deploy-key-2 }}'; then - ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key-2] }}'; # zizmor: ignore[overprovisioned-secrets] + ssh-add - <<< '${{ secrets[inputs.extra-repo-deploy-key-2] }}'; fi devcontainer-utils-init-ssh-deploy-keys || true; fi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 528ee5d4..6769c454 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -31,3 +31,7 @@ repos: hooks: # Run the linter. - id: zizmor + exclude: | + (?x)^( + .github/workflows/build-in-devcontainer.yaml + )$ From 01f7a151a7a7585aef8e6e6ea60980ba63650e1e Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 1 Aug 2025 11:58:17 -0500 Subject: [PATCH 67/72] allow customizing build workflow name in conda-upload-packages and wheels-publish (#406) --- .github/workflows/conda-upload-packages.yaml | 24 +++++++++++--------- .github/workflows/wheels-publish.yaml | 7 ++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/conda-upload-packages.yaml b/.github/workflows/conda-upload-packages.yaml index 560f1602..74c2337d 100644 --- a/.github/workflows/conda-upload-packages.yaml +++ b/.github/workflows/conda-upload-packages.yaml @@ -29,6 +29,12 @@ on: description: The label that should be applied to packages uploaded to Anaconda.org type: string default: main + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string defaults: run: @@ -71,17 +77,13 @@ jobs: persist-credentials: true - name: Standardize repository information - env: - RAPIDS_REPOSITORY: ${{ inputs.repo || github.repository }} - RAPIDS_REF_NAME: ${{ inputs.branch || github.ref_name }} - RAPIDS_NIGHTLY_DATE: ${{ inputs.date }} - run: | - { - echo "RAPIDS_REPOSITORY=${RAPIDS_REPOSITORY}" - echo "RAPIDS_SHA=$(git rev-parse HEAD)" - echo "RAPIDS_REF_NAME=${RAPIDS_REF_NAME}" - echo "RAPIDS_NIGHTLY_DATE=${RAPIDS_NIGHTLY_DATE}" - } >> "${GITHUB_ENV}" + uses: rapidsai/shared-actions/rapids-github-info@main + with: + repo: ${{ inputs.repo }} + branch: ${{ inputs.branch }} + build_workflow_name: ${{ inputs.build_workflow_name }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} # Per the docs at https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#get-rate-limit-status-for-the-authenticated-user, # checking '/rate_limit | jq .' should not itself count against any rate limits. diff --git a/.github/workflows/wheels-publish.yaml b/.github/workflows/wheels-publish.yaml index 8907a34a..59ec2258 100644 --- a/.github/workflows/wheels-publish.yaml +++ b/.github/workflows/wheels-publish.yaml @@ -37,6 +37,12 @@ on: description: "If true, the wheel will be published to pypi.org" type: boolean default: false + build_workflow_name: + description: | + Name of a workflow file that produced artifacts to be downloaded in this run. + If not set (the default), artifact-handling scripts use RAPIDS-conventional defaults (like "build.yaml" when "build_type == nightly"). + required: false + type: string permissions: actions: read @@ -86,6 +92,7 @@ jobs: with: repo: ${{ inputs.repo }} branch: ${{ inputs.branch }} + build_workflow_name: ${{ inputs.build_workflow_name }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} From a2832ab1186e62593dc6facfddd2718e428db8c1 Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Mon, 11 Aug 2025 09:51:11 -0700 Subject: [PATCH 68/72] Cache sccache preprocessor and toolchain dirs across runs (#408) --- .github/workflows/build-in-devcontainer.yaml | 56 ++++++++++++++++---- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 3dba8995..aabcb080 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -104,6 +104,7 @@ jobs: repository: ${{ inputs.repo }} ref: ${{ inputs.sha }} fetch-depth: 0 + path: repo persist-credentials: true # This provides an initial set of metadata tags. Jobs are free to add to the RAPIDS_JOB_ATTRIBUTES @@ -119,36 +120,67 @@ jobs: - name: Check if repo has devcontainer env: + ARCH: ${{ matrix.ARCH }} CUDA_VER: ${{ matrix.CUDA_VER }} PACKAGER: ${{ matrix.PACKAGER }} + RUN_ID: ${{ github.run_id }} + RUN_ATTEMPT: ${{ github.run_attempt }} run: | - echo "REPOSITORY=$(basename "$(pwd)")" | tee -a "${GITHUB_ENV}" - if test -f ".devcontainer/cuda${CUDA_VER}-${PACKAGER}/devcontainer.json"; then - echo "HAS_DEVCONTAINER=true" >> "${GITHUB_ENV}" - else - echo "HAS_DEVCONTAINER=false" >> "${GITHUB_ENV}" + HAS_DEVCONTAINER=false + if test -f "repo/.devcontainer/cuda${CUDA_VER}-${PACKAGER}/devcontainer.json"; then + HAS_DEVCONTAINER=true fi + cat < Date: Tue, 12 Aug 2025 09:31:53 -0500 Subject: [PATCH 69/72] [pre-commit.ci] pre-commit autoupdate (#410) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6769c454..bc8ccd5c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: check-added-large-files From c3a888ba39240e4d50756f1763bc5b9fa48b7f5a Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:12:29 -0700 Subject: [PATCH 70/72] Update preprocessor cache dir in `build-in-devcontainer.yaml` (#411) --- .github/workflows/build-in-devcontainer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index aabcb080..084e3aac 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -160,7 +160,7 @@ jobs: name: Setup sccache preprocessor cache uses: actions/cache@v4 with: - path: .cache/sccache + path: .cache/sccache/preprocessor restore-keys: sccache-preprocessor-cache-${{ runner.os }}-${{ env.BUILD_SLUG }} key: sccache-preprocessor-cache-${{ runner.os }}-${{ env.BUILD_SLUG }}-${{ env.ARTIFACT_SLUG }} From e6b2ffdebf2e1abe4365ab59824331170639a2cc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 15:13:44 -0400 Subject: [PATCH 71/72] [pre-commit.ci] pre-commit autoupdate (#414) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bc8ccd5c..3f70e99a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,7 +27,7 @@ repos: - id: verify-copyright - repo: https://github.com/zizmorcore/zizmor-pre-commit # Zizmor version. - rev: v1.11.0 + rev: v1.12.1 hooks: # Run the linter. - id: zizmor From 2e117c43e9488d87b1b8c5ae14da06573290c275 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 15:23:44 -0400 Subject: [PATCH 72/72] chore(deps): update aws-actions/configure-aws-credentials action to v4.3.1 (#407) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build-in-devcontainer.yaml | 2 +- .github/workflows/conda-cpp-build.yaml | 2 +- .github/workflows/conda-cpp-post-build-checks.yaml | 2 +- .github/workflows/conda-cpp-tests.yaml | 2 +- .github/workflows/conda-python-build.yaml | 2 +- .github/workflows/conda-python-tests.yaml | 2 +- .github/workflows/custom-job.yaml | 2 +- .github/workflows/wheels-build.yaml | 2 +- .github/workflows/wheels-test.yaml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-in-devcontainer.yaml b/.github/workflows/build-in-devcontainer.yaml index 084e3aac..e56b9d06 100644 --- a/.github/workflows/build-in-devcontainer.yaml +++ b/.github/workflows/build-in-devcontainer.yaml @@ -138,7 +138,7 @@ jobs: EOF - if: ${{ env.HAS_DEVCONTAINER == 'true' }} - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/conda-cpp-build.yaml b/.github/workflows/conda-cpp-build.yaml index 4ac10170..ce583a3a 100644 --- a/.github/workflows/conda-cpp-build.yaml +++ b/.github/workflows/conda-cpp-build.yaml @@ -115,7 +115,7 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/conda-cpp-post-build-checks.yaml b/.github/workflows/conda-cpp-post-build-checks.yaml index 9ac95308..ce0a9aba 100644 --- a/.github/workflows/conda-cpp-post-build-checks.yaml +++ b/.github/workflows/conda-cpp-post-build-checks.yaml @@ -54,7 +54,7 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/conda-cpp-tests.yaml b/.github/workflows/conda-cpp-tests.yaml index b74b5a6e..48efbfee 100644 --- a/.github/workflows/conda-cpp-tests.yaml +++ b/.github/workflows/conda-cpp-tests.yaml @@ -162,7 +162,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index 6ef135dc..8b3d4f60 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -120,7 +120,7 @@ jobs: env: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/conda-python-tests.yaml b/.github/workflows/conda-python-tests.yaml index 21e36e0b..643c416a 100644 --- a/.github/workflows/conda-python-tests.yaml +++ b/.github/workflows/conda-python-tests.yaml @@ -166,7 +166,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/custom-job.yaml b/.github/workflows/custom-job.yaml index 3f97baf5..0ddb4e90 100644 --- a/.github/workflows/custom-job.yaml +++ b/.github/workflows/custom-job.yaml @@ -106,7 +106,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/wheels-build.yaml b/.github/workflows/wheels-build.yaml index bdd9e52a..6a34fc1e 100644 --- a/.github/workflows/wheels-build.yaml +++ b/.github/workflows/wheels-build.yaml @@ -160,7 +160,7 @@ jobs: RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }} diff --git a/.github/workflows/wheels-test.yaml b/.github/workflows/wheels-test.yaml index e7f56708..5a215655 100644 --- a/.github/workflows/wheels-test.yaml +++ b/.github/workflows/wheels-test.yaml @@ -180,7 +180,7 @@ jobs: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} # GPU jobs must set this container env variable RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} steps: - - uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ vars.AWS_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION }}