Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
9cf09a9
ci: activate dependency-aware package builds and tests
kkraus14 Jul 31, 2026
da7ebee
ci: use paths-filter for selective CI planning
kkraus14 Aug 14, 2026
42fe412
ci: refine selective path classification
kkraus14 Aug 14, 2026
eaed263
ci: compute selective workplan in Python
kkraus14 Aug 14, 2026
5c798a7
ci: split selective tests by platform
kkraus14 Aug 17, 2026
e5c3610
ci: harden prior artifact downloads
kkraus14 Aug 17, 2026
1ccaaef
ci: defer artifact download retries
kkraus14 Aug 17, 2026
ca29abd
ci: simplify workplan path classification
kkraus14 Aug 17, 2026
44c6a3a
ci: simplify workplan plumbing
kkraus14 Aug 19, 2026
fba3b4d
Merge main into agent/selective-ci-orchestration
kkraus14 Aug 19, 2026
727ef59
Derive reusable artifact platforms from test matrix
kkraus14 Aug 19, 2026
30da891
ci: route selective CI through Moon
kkraus14 Aug 20, 2026
139c2c4
ci: separate editable installs from Moon tests
kkraus14 Aug 20, 2026
ceaae51
Revert Moon CI migration from PR #2467
kkraus14 Aug 20, 2026
5c5b4bf
cuda.bindings: build CUDA 12 and 13 from main
kkraus14 Aug 20, 2026
dc9aee4
ci: isolate cuda-core source builds by CUDA major
kkraus14 Aug 20, 2026
ca252cf
test: use Ruff security suppressions in CUDA 12 tests
kkraus14 Aug 20, 2026
e175708
build: align CUDA 12 cibuildwheel targets
kkraus14 Aug 20, 2026
a65ccea
bench: support CUDA 12 context creation
kkraus14 Aug 20, 2026
c980cc9
ci: use blobless source-smoke checkout
kkraus14 Aug 20, 2026
5d8bffa
Merge main into CUDA 12/13 selective CI work
rwgk Aug 31, 2026
b506585
cuda.bindings: sync CUDA 12 maintenance fixes
rwgk Aug 31, 2026
ee46c3e
ci: guard shared CUDA bindings maintenance
rwgk Aug 31, 2026
bfef374
ci: advance CUDA 12 versions after release
rwgk Aug 31, 2026
b87d0a1
docs: avoid generated-file marker in maintenance guide
rwgk Aug 31, 2026
71ad717
ci/versions.yml redesign (major change)
rwgk Aug 31, 2026
4e7b09d
Merge remote-tracking branch 'upstream/main' into agent/cuda-bindings…
rwgk Sep 1, 2026
f4ddc4e
ci: address multi-line bindings review feedback
rwgk Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,3 @@ updates:
applies-to: version-updates
patterns: ["*"]
update-types: ["major", "minor", "patch"]

# GitHub Actions updates targeting the 12.9.x branch
- package-ecosystem: github-actions
directory: /
target-branch: "12.9.x" # keep in sync with backport_branch in ci/versions.yml
schedule:
interval: "monthly"
time: "09:00"
timezone: "America/Los_Angeles"

# Keep churn down: only one open PR from this ecosystem at a time
open-pull-requests-limit: 1

groups:
actions-monthly:
applies-to: version-updates
patterns: ["*"]
update-types: ["major", "minor", "patch"]
4 changes: 3 additions & 1 deletion .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@

cuda.bindings:
- changed-files:
- any-glob-to-any-file: 'cuda_bindings/**'
- any-glob-to-any-file:
- 'cuda_bindings/**'
- 'cuda_bindings_*/**'

cuda.core:
- changed-files:
Expand Down
76 changes: 0 additions & 76 deletions .github/workflows/backport.yml

This file was deleted.

117 changes: 92 additions & 25 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ on:
required: false
default: "gh-pages"
type: string
bindings-line:
description: "Resolved CUDA bindings release-line JSON"
required: false
default: ""
type: string

jobs:
build:
Expand All @@ -60,29 +65,54 @@ jobs:
fetch-depth: 1
ref: ${{ inputs.git-tag }}

- name: Read build CTK version
- name: Checkout docs control plane
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.sha }}
path: .ci-control

- name: Install CI tool dependencies
run: python3 -m pip install -r .ci-control/ci/tools/requirements.txt

- name: Resolve CUDA bindings line
env:
BINDINGS_LINE: ${{ inputs.bindings-line }}
IS_RELEASE: ${{ inputs.is-release }}
RELEASE_TAG: ${{ inputs.git-tag }}
run: |
if [[ -f ci/versions.yml ]]; then
BUILD_CTK_VER=$(yq '.cuda.build.version' ci/versions.yml)
elif [[ -f ci/versions.json ]]; then
BUILD_CTK_VER=$(jq -r '.cuda.build.version' ci/versions.json)
set -euo pipefail
if [[ -n "$BINDINGS_LINE" ]]; then
bindings_line="$BINDINGS_LINE"
elif [[ "${IS_RELEASE}" == "true" && "$RELEASE_TAG" == v* ]]; then
bindings_line=$(python3 .ci-control/ci/tools/resolve_release_bindings_line.py \
--release-tag "$RELEASE_TAG" \
--release-source-root . \
--control-config .ci-control/ci/versions.yml)
else
echo "error: cannot find ci/versions.yml or ci/versions.json" >&2
exit 1
bindings_line=$(python3 .ci-control/ci/tools/bindings_config.py get --role current)
fi
BUILD_CTK_VER=$(jq -er '.toolkit_version' <<< "$bindings_line")
BINDINGS_COMPONENT_DIR=$(jq -er '.release_source_dir // .source_dir' <<< "$bindings_line")
BINDINGS_REGISTRY_ORIGIN=$(jq -er '.release_registry_origin // "tag"' <<< "$bindings_line")
if [[ ! "${BUILD_CTK_VER}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "error: derived CTK build version ${BUILD_CTK_VER} does not match MAJOR.MINOR.MICRO" >&2
exit 1
fi
if [[ ! -d "$BINDINGS_COMPONENT_DIR" ]]; then
echo "error: resolved bindings source directory does not exist: $BINDINGS_COMPONENT_DIR" >&2
exit 1
fi
echo "BUILD_CTK_VER=${BUILD_CTK_VER}" >> "$GITHUB_ENV"
echo "BINDINGS_COMPONENT_DIR=${BINDINGS_COMPONENT_DIR}" >> "$GITHUB_ENV"
echo "BINDINGS_REGISTRY_ORIGIN=${BINDINGS_REGISTRY_ORIGIN}" >> "$GITHUB_ENV"

# TODO: This workflow runs on GH-hosted runner and cannot use the proxy cache

- name: Set up miniforge
uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
activate-environment: cuda-python-docs
environment-file: ./cuda_python/docs/environment-docs.yml
environment-file: ./.ci-control/cuda_python/docs/environment-docs.yml
miniforge-version: latest
conda-remove-defaults: "true"
python-version: 3.12
Expand All @@ -102,13 +132,16 @@ jobs:
cuda-version: ${{ env.BUILD_CTK_VER }}

- name: Set environment variables
env:
IS_RELEASE: ${{ inputs.is-release }}
RELEASE_TAG: ${{ inputs.git-tag }}
run: |
PYTHON_VERSION_FORMATTED="312" # see above
REPO_DIR=$(pwd)

if [[ ${{ inputs.is-release }} == "true" ]]; then
if [[ "$IS_RELEASE" == "true" ]]; then
FILE_HASH="*"
DOCS_GITHUB_REF="${{ inputs.git-tag }}"
DOCS_GITHUB_REF="$RELEASE_TAG"
if [[ -z "${DOCS_GITHUB_REF}" ]]; then
DOCS_GITHUB_REF="${GITHUB_REF_NAME}"
fi
Expand All @@ -126,22 +159,31 @@ jobs:
CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${BUILD_CTK_VER}-linux-64"
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${FILE_HASH}" >> $GITHUB_ENV
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_bindings/dist")" >> $GITHUB_ENV
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "$REPO_DIR/${BINDINGS_COMPONENT_DIR}/dist")" >> $GITHUB_ENV
if [[ "$BINDINGS_REGISTRY_ORIGIN" == "control" ]]; then
CUDA_PYTHON_ARTIFACT_NAME="cuda-python-wheel"
else
CUDA_PYTHON_ARTIFACT_NAME="cuda-python-wheel-cuda${BUILD_CTK_VER}"
fi
echo "CUDA_PYTHON_ARTIFACT_NAME=${CUDA_PYTHON_ARTIFACT_NAME}" >> $GITHUB_ENV

- name: Download cuda-python build artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-python' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: cuda-python-wheel
name: ${{ env.CUDA_PYTHON_ARTIFACT_NAME }}
path: .
run-id: ${{ inputs.run-id }}
github-token: ${{ github.token }}

- name: Display structure of downloaded cuda-python artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-python' }}
run: |
pwd
ls -lahR .

- name: Download cuda-pathfinder build artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-pathfinder' || inputs.component == 'cuda-core' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: cuda-pathfinder-wheel
Expand All @@ -150,6 +192,7 @@ jobs:
github-token: ${{ github.token }}

- name: Display structure of downloaded cuda-pathfinder artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-pathfinder' || inputs.component == 'cuda-core' }}
run: |
pwd
ls -lahR cuda_pathfinder
Expand All @@ -162,7 +205,7 @@ jobs:
path: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}

- name: Download cuda.bindings build artifacts
if: ${{ inputs.is-release }}
if: ${{ inputs.is-release && (inputs.component == 'all' || inputs.component == 'cuda-bindings' || inputs.component == 'cuda-core') }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }}
Expand All @@ -172,6 +215,7 @@ jobs:
github-token: ${{ github.token }}

- name: Display structure of downloaded cuda.bindings artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-bindings' || inputs.component == 'cuda-core' }}
run: |
pwd
ls -lahR $CUDA_BINDINGS_ARTIFACTS_DIR
Expand All @@ -184,7 +228,7 @@ jobs:
path: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}

- name: Download cuda.core build artifacts
if: ${{ inputs.is-release }}
if: ${{ inputs.is-release && (inputs.component == 'all' || inputs.component == 'cuda-core') }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: ${{ env.CUDA_CORE_ARTIFACT_NAME }}
Expand All @@ -194,26 +238,37 @@ jobs:
github-token: ${{ github.token }}

- name: Display structure of downloaded cuda.core build artifacts
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-core' }}
run: |
pwd
ls -lahR $CUDA_CORE_ARTIFACTS_DIR

- name: Install all packages
- name: Install cuda-pathfinder
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-pathfinder' || inputs.component == 'cuda-core' }}
run: |
pushd cuda_pathfinder
pip install *.whl
popd

- name: Install cuda.bindings
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-bindings' || inputs.component == 'cuda-core' }}
run: |
pushd "${CUDA_BINDINGS_ARTIFACTS_DIR}"
pip install *.whl
popd

- name: Install cuda.core
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-core' }}
run: |
pushd "${CUDA_CORE_ARTIFACTS_DIR}"
pip install *.whl
popd

# Subpackages are already installed from CI artifacts above.
# --no-deps avoids re-resolving cuda-core from PyPI during tag releases.
- name: Install cuda-python
if: ${{ !inputs.is-release || inputs.component == 'all' || inputs.component == 'cuda-python' }}
run: |
# Documentation builds do not exercise runtime dependencies.
# --no-deps also avoids resolving artifacts absent from focused tag runs.
pip install --no-deps cuda_python*.whl

# This step sets the PR_NUMBER/BUILD_LATEST/BUILD_PREVIEW env vars.
Expand All @@ -229,9 +284,11 @@ jobs:

- name: Build all docs
if: ${{ inputs.component == 'all' }}
env:
IS_RELEASE: ${{ inputs.is-release }}
run: |
pushd cuda_python/docs/
if [[ "${{ inputs.is-release }}" == "false" ]]; then
if [[ "$IS_RELEASE" == "false" ]]; then
./build_all_docs.sh latest-only
else
./build_all_docs.sh
Expand All @@ -244,10 +301,20 @@ jobs:

- name: Build component docs
if: ${{ inputs.component != 'all' }}
env:
DOCS_COMPONENT: ${{ inputs.component }}
IS_RELEASE: ${{ inputs.is-release }}
run: |
COMPONENT=$(echo "${{ inputs.component }}" | tr '-' '_')
pushd ${COMPONENT}/docs/
if [[ "${{ inputs.is-release }}" == "false" ]]; then
case "$DOCS_COMPONENT" in
cuda-bindings|cuda-core|cuda-pathfinder|cuda-python) ;;
*) echo "error: unsupported docs component: $DOCS_COMPONENT" >&2; exit 1 ;;
esac
COMPONENT="${DOCS_COMPONENT//-/_}"
if [[ "$DOCS_COMPONENT" == "cuda-bindings" ]]; then
COMPONENT="${BINDINGS_COMPONENT_DIR}"
fi
pushd "${COMPONENT}/docs/"
if [[ "$IS_RELEASE" == "false" ]]; then
./build_docs.sh latest-only
else
./build_docs.sh
Expand All @@ -256,13 +323,13 @@ jobs:
fi
ls -l build
popd
if [[ "${{ inputs.component }}" != "cuda-python" ]]; then
TARGET="${{ inputs.component }}"
mkdir -p artifacts/docs/${TARGET}
if [[ "$DOCS_COMPONENT" != "cuda-python" ]]; then
TARGET="$DOCS_COMPONENT"
mkdir -p "artifacts/docs/${TARGET}"
else
TARGET=""
fi
mv ${COMPONENT}/docs/build/html/* artifacts/docs/${TARGET}
mv "${COMPONENT}"/docs/build/html/* "artifacts/docs/${TARGET}"

- name: Write rendered docs file list
if: ${{ !inputs.is-release && github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }}
Expand Down
Loading
Loading