From 71a85220289e9343ce6b253d4a2390801fb8aed3 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 3 Apr 2026 11:37:39 -0700 Subject: [PATCH 01/11] update github action versions to node24 --- .github/actions/install-devcontainers-cli/action.yml | 4 ++-- .github/actions/setup-runner-env/action.yml | 10 +++++----- .github/workflows/build-and-test-feature.yml | 4 ++-- .github/workflows/build-test-and-push-linux-image.yml | 6 +++--- .../workflows/build-test-and-push-windows-image.yml | 4 ++-- .github/workflows/docs.yml | 2 +- .github/workflows/release-features.yml | 2 +- .github/workflows/release-linux.yml | 4 ++-- .github/workflows/release-windows.yml | 2 +- .github/workflows/release.yml | 4 ++-- .github/workflows/test.yml | 6 +++--- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/actions/install-devcontainers-cli/action.yml b/.github/actions/install-devcontainers-cli/action.yml index 2a14ffaf6..d2332818f 100644 --- a/.github/actions/install-devcontainers-cli/action.yml +++ b/.github/actions/install-devcontainers-cli/action.yml @@ -6,9 +6,9 @@ runs: using: composite steps: - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version: '20' + node-version: '24' - name: Install devcontainers CLI shell: bash run: | diff --git a/.github/actions/setup-runner-env/action.yml b/.github/actions/setup-runner-env/action.yml index a6ede0d22..dbfdb5acc 100644 --- a/.github/actions/setup-runner-env/action.yml +++ b/.github/actions/setup-runner-env/action.yml @@ -26,13 +26,13 @@ runs: - if: runner.environment == 'self-hosted' name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version: '20' + node-version: '24' - if: runner.environment != 'self-hosted' name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Create docker context shell: bash @@ -40,14 +40,14 @@ runs: - if: runner.environment != 'self-hosted' name: Setup docker buildx on github-hosted runners - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 with: buildkitd-flags: --debug endpoint: builder - if: runner.environment == 'self-hosted' name: Setup docker buildx on self-hosted runners - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 with: buildkitd-flags: --debug --config /etc/buildkit/buildkitd.toml endpoint: builder diff --git a/.github/workflows/build-and-test-feature.yml b/.github/workflows/build-and-test-feature.yml index 390637a86..c2e162918 100644 --- a/.github/workflows/build-and-test-feature.yml +++ b/.github/workflows/build-and-test-feature.yml @@ -22,12 +22,12 @@ jobs: arch: [amd64, arm64] steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.GPUCIBOT_DOCKERHUB_USER || vars.DOCKERHUB_USER }} password: ${{ secrets.GPUCIBOT_DOCKERHUB_TOKEN || secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/build-test-and-push-linux-image.yml b/.github/workflows/build-test-and-push-linux-image.yml index 86246f87c..0aa7e4e99 100644 --- a/.github/workflows/build-test-and-push-linux-image.yml +++ b/.github/workflows/build-test-and-push-linux-image.yml @@ -41,7 +41,7 @@ jobs: version: ${{ steps.json.outputs.version }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false @@ -58,7 +58,7 @@ jobs: container_env: "${{ inputs.container_env }}" - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.GPUCIBOT_DOCKERHUB_USER || vars.DOCKERHUB_USER }} password: ${{ secrets.GPUCIBOT_DOCKERHUB_TOKEN || secrets.DOCKERHUB_TOKEN }} @@ -80,7 +80,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.GPUCIBOT_DOCKERHUB_USER || vars.DOCKERHUB_USER }} password: ${{ secrets.GPUCIBOT_DOCKERHUB_TOKEN || secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/build-test-and-push-windows-image.yml b/.github/workflows/build-test-and-push-windows-image.yml index 88ce0710d..55f8c1a5e 100644 --- a/.github/workflows/build-test-and-push-windows-image.yml +++ b/.github/workflows/build-test-and-push-windows-image.yml @@ -37,7 +37,7 @@ jobs: - { edition: "2022", runner: "${{ github.repository != 'rapidsai/devcontainers' && 'windows-2022' || 'windows-amd64-cpu4' }}" } steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false @@ -63,7 +63,7 @@ jobs: EOF - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.GPUCIBOT_DOCKERHUB_USER || vars.DOCKERHUB_USER }} password: ${{ secrets.GPUCIBOT_DOCKERHUB_TOKEN || secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d935a3eee..588cb0339 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: pull-requests: write steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Copy common scripts into features uses: ./.github/actions/copy-common-scripts diff --git a/.github/workflows/release-features.yml b/.github/workflows/release-features.yml index 53b2e788a..883e19406 100644 --- a/.github/workflows/release-features.yml +++ b/.github/workflows/release-features.yml @@ -13,7 +13,7 @@ jobs: packages: write steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Copy common scripts into features uses: ./.github/actions/copy-common-scripts diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index a8daee82e..40553ebd2 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -17,7 +17,7 @@ jobs: scenarios: "${{ steps.matrix.outputs.scenarios }}" steps: - name: "Checkout ${{ github.repository }}" - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false @@ -39,7 +39,7 @@ jobs: linux: ${{ steps.matrix.outputs.linux }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index 3c29f7561..046562bb0 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -16,7 +16,7 @@ jobs: windows: ${{ steps.matrix.outputs.windows }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5211d3bfc..ae621979a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: scenarios: "${{ steps.matrix.outputs.scenarios }}" steps: - name: "Checkout ${{ github.repository }}" - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false @@ -64,7 +64,7 @@ jobs: windows: ${{ steps.matrix.outputs.windows }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 99af3309f..96d542967 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false @@ -62,7 +62,7 @@ jobs: scenarios: ${{ steps.matrix.outputs.scenarios }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false @@ -134,7 +134,7 @@ jobs: windows: ${{ steps.matrix.outputs.windows }} steps: - name: Checkout ${{ github.repository }} - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 persist-credentials: false From f2638c33c456729acd9cf494e05ae925db22feed Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 3 Apr 2026 11:37:47 -0700 Subject: [PATCH 02/11] update devcontainer CLI version to v0.85.0 --- .github/actions/build-linux-image/action.yml | 2 +- .github/actions/install-devcontainers-cli/action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-linux-image/action.yml b/.github/actions/build-linux-image/action.yml index 5ed505286..865ba8e2e 100644 --- a/.github/actions/build-linux-image/action.yml +++ b/.github/actions/build-linux-image/action.yml @@ -44,7 +44,7 @@ runs: if test "${push}" = true; then outputs+=(--output "type=image,compression=zstd,force-compression=true,oci-mediatypes=true,push=true,push-by-digest=true,name=${repo}"); # HACK: remove the `-t` arg from the `docker buildx build` command generated by `devcontainer build` - sed -i 's/,t.map(v=>l.push("-t",v))//g' "$(npm list -g | head -n1)"/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js; + sed -i 's/,t.map(G=>l.push("-t",G))//g' "$(npm list -g | head -n1)"/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js; fi until devcontainer build \ diff --git a/.github/actions/install-devcontainers-cli/action.yml b/.github/actions/install-devcontainers-cli/action.yml index d2332818f..7c94f1c32 100644 --- a/.github/actions/install-devcontainers-cli/action.yml +++ b/.github/actions/install-devcontainers-cli/action.yml @@ -14,4 +14,4 @@ runs: run: | sudo apt update; sudo apt install -y --no-install-recommends build-essential; - npm install -g @devcontainers/cli@v0.80.2; + npm install -g @devcontainers/cli@v0.85.0; From f2c820c34b4675518a07b204a2a03a876c44d249 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 3 Apr 2026 12:02:10 -0700 Subject: [PATCH 03/11] add cacheFrom to devcontainer.json files --- .devcontainer/cuda12.9-conda/devcontainer.json | 5 ++++- .devcontainer/cuda12.9-pip/devcontainer.json | 5 ++++- .devcontainer/cuda13.0-conda/devcontainer.json | 5 ++++- .devcontainer/cuda13.0-pip/devcontainer.json | 5 ++++- .devcontainer/cuda13.1-conda/devcontainer.json | 5 ++++- .devcontainer/cuda13.1-pip/devcontainer.json | 5 ++++- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.devcontainer/cuda12.9-conda/devcontainer.json b/.devcontainer/cuda12.9-conda/devcontainer.json index 1dbfc7695..14ca2736e 100644 --- a/.devcontainer/cuda12.9-conda/devcontainer.json +++ b/.devcontainer/cuda12.9-conda/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "12.9", "PYTHON_PACKAGE_MANAGER": "conda", "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda12.9-conda" + ] }, "runArgs": [ "--rm", diff --git a/.devcontainer/cuda12.9-pip/devcontainer.json b/.devcontainer/cuda12.9-pip/devcontainer.json index 89797b630..11ae65eda 100644 --- a/.devcontainer/cuda12.9-pip/devcontainer.json +++ b/.devcontainer/cuda12.9-pip/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "12.9", "PYTHON_PACKAGE_MANAGER": "pip", "BASE": "rapidsai/devcontainers:26.06-cpp-cuda12.9-ucx1.19.0-openmpi5.0.10" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda12.9-pip" + ] }, "runArgs": [ "--rm", diff --git a/.devcontainer/cuda13.0-conda/devcontainer.json b/.devcontainer/cuda13.0-conda/devcontainer.json index e3723b08a..3dd393c69 100644 --- a/.devcontainer/cuda13.0-conda/devcontainer.json +++ b/.devcontainer/cuda13.0-conda/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "13.0", "PYTHON_PACKAGE_MANAGER": "conda", "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda13.0-conda" + ] }, "runArgs": [ "--rm", diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json index 94bf3f489..40916a517 100644 --- a/.devcontainer/cuda13.0-pip/devcontainer.json +++ b/.devcontainer/cuda13.0-pip/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "13.0", "PYTHON_PACKAGE_MANAGER": "pip", "BASE": "rapidsai/devcontainers:26.06-cpp-cuda13.0-ucx1.19.0-openmpi5.0.10" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda13.0-pip" + ] }, "runArgs": [ "--rm", diff --git a/.devcontainer/cuda13.1-conda/devcontainer.json b/.devcontainer/cuda13.1-conda/devcontainer.json index 4bccee23c..a77c4f0d9 100644 --- a/.devcontainer/cuda13.1-conda/devcontainer.json +++ b/.devcontainer/cuda13.1-conda/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "13.1", "PYTHON_PACKAGE_MANAGER": "conda", "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda13.1-conda" + ] }, "runArgs": [ "--rm", diff --git a/.devcontainer/cuda13.1-pip/devcontainer.json b/.devcontainer/cuda13.1-pip/devcontainer.json index 414c9e001..a37c38cdc 100644 --- a/.devcontainer/cuda13.1-pip/devcontainer.json +++ b/.devcontainer/cuda13.1-pip/devcontainer.json @@ -6,7 +6,10 @@ "CUDA": "13.1", "PYTHON_PACKAGE_MANAGER": "pip", "BASE": "rapidsai/devcontainers:26.06-cpp-cuda13.1-ucx1.19.0-openmpi5.0.10" - } + }, + "cacheFrom": [ + "ghcr.io/rapidsai/devcontainers/devcontainer:26.06-cuda13.1-pip" + ] }, "runArgs": [ "--rm", From c675ff30e284ec69e8b51506eba8d3e9509290ad Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 3 Apr 2026 12:02:21 -0700 Subject: [PATCH 04/11] add build-devcontainers.yaml workflow --- .github/workflows/build-devcontainers.yml | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/build-devcontainers.yml diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml new file mode 100644 index 000000000..b9528c00c --- /dev/null +++ b/.github/workflows/build-devcontainers.yml @@ -0,0 +1,58 @@ +name: Build devcontainers + +concurrency: + group: build-from-${{ github.ref_name }} + cancel-in-progress: true + +on: + workflow_call: + inputs: + 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.9-pip/' and '.devcontainer/cuda13.1-pip/', + '["12.9", "13.1"]' could be passed here to build both of those devcontainers in CI. + type: string + default: '["12.9", "13.1"]' + 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"]' + push: + type: string + default: true + workflow_dispatch: + inputs: + 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.9-pip/' and '.devcontainer/cuda13.1-pip/', + '["12.9", "13.1"]' could be passed here to build both of those devcontainers in CI. + type: string + default: '["12.9", "13.1"]' + 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"]' + push: + type: string + default: true + +jobs: + build: + name: Build devcontainers + secrets: inherit + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + permissions: + packages: write + with: + retries: 1 + cuda: "${{ inputs.cuda }}" + python_package_manager: "${{ inputs.python_package_manager }}" + push: "${{ inputs.push }}" From 0eb976e4f22bc6e9adc2ef10c86031cd4015c527 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 3 Apr 2026 17:18:13 -0700 Subject: [PATCH 05/11] build devcontainers in release workflow --- .github/workflows/build-devcontainers.yml | 1 - .github/workflows/release.yml | 24 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml index b9528c00c..f569b7dcf 100644 --- a/.github/workflows/build-devcontainers.yml +++ b/.github/workflows/build-devcontainers.yml @@ -52,7 +52,6 @@ jobs: permissions: packages: write with: - retries: 1 cuda: "${{ inputs.cuda }}" python_package_manager: "${{ inputs.python_package_manager }}" push: "${{ inputs.push }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ae621979a..e73c28d6b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -115,3 +115,27 @@ jobs: needs: features-matrix secrets: inherit uses: ./.github/workflows/release-features.yml + + build-devcontainers-after-images-released: + if: needs.image-matrix.outputs.linux != '{"include":[]}' + needs: [image-matrix, release-linux] + name: Build devcontainers + secrets: inherit + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + permissions: + packages: write + with: + push: true + cuda: '["12.9", "13.0", "13.1"]' + + build-devcontainers-after-features-released: + if: needs.image-matrix.outputs.linux == '{"include":[]}' && (needs.features-matrix.outputs.features != '[]' || needs.features-matrix.outputs.scenarios != '[]') + needs: [features-matrix, release-features] + name: Build devcontainers + secrets: inherit + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + permissions: + packages: write + with: + push: true + cuda: '["12.9", "13.0", "13.1"]' From 60c9761fd4eabb21ed0302de6f830360c0d50562 Mon Sep 17 00:00:00 2001 From: Paul Taylor <178183+trxcllnt@users.noreply.github.com> Date: Thu, 30 Apr 2026 10:51:18 -0700 Subject: [PATCH 06/11] Update .github/actions/setup-runner-env/action.yml Co-authored-by: Bradley Dice --- .github/actions/setup-runner-env/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-runner-env/action.yml b/.github/actions/setup-runner-env/action.yml index 6b7ae15df..4cdc28919 100644 --- a/.github/actions/setup-runner-env/action.yml +++ b/.github/actions/setup-runner-env/action.yml @@ -26,7 +26,7 @@ runs: - if: runner.environment == 'self-hosted' name: Setup Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version: '24' From 3f03be5ebbed39f0703db8691247e3f2409bb3e2 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 13 May 2026 16:15:03 -0700 Subject: [PATCH 07/11] string -> boolean --- .github/workflows/build-devcontainers.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml index f569b7dcf..69f30244b 100644 --- a/.github/workflows/build-devcontainers.yml +++ b/.github/workflows/build-devcontainers.yml @@ -41,7 +41,7 @@ on: type: string default: '["conda", "pip"]' push: - type: string + type: boolean default: true jobs: @@ -54,4 +54,4 @@ jobs: with: cuda: "${{ inputs.cuda }}" python_package_manager: "${{ inputs.python_package_manager }}" - push: "${{ inputs.push }}" + push: ${{ inputs.push }} From 99e5b9b1ec64bb313dcbab72abbfa531c5ebaa72 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 13 May 2026 16:15:43 -0700 Subject: [PATCH 08/11] update group name --- .github/workflows/build-devcontainers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml index 69f30244b..b1e14d45e 100644 --- a/.github/workflows/build-devcontainers.yml +++ b/.github/workflows/build-devcontainers.yml @@ -1,7 +1,7 @@ name: Build devcontainers concurrency: - group: build-from-${{ github.ref_name }} + group: build-devcontainers-from-${{ github.ref_name }} cancel-in-progress: true on: From 348752a1dcf166e685dca18f95e6421d4f518459 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 18 May 2026 20:55:41 -0700 Subject: [PATCH 09/11] 13.1 -> 13.2, remove CTK 13.0 devcontainers --- .../cuda13.0-conda/devcontainer.json | 115 ------------------ .devcontainer/cuda13.0-conda/features | 1 - .devcontainer/cuda13.0-pip/devcontainer.json | 102 ---------------- .devcontainer/cuda13.0-pip/features | 1 - .github/workflows/build-devcontainers.yml | 12 +- .github/workflows/release.yml | 4 +- .github/workflows/test-rapids-build-times.yml | 2 +- 7 files changed, 9 insertions(+), 228 deletions(-) delete mode 100644 .devcontainer/cuda13.0-conda/devcontainer.json delete mode 120000 .devcontainer/cuda13.0-conda/features delete mode 100644 .devcontainer/cuda13.0-pip/devcontainer.json delete mode 120000 .devcontainer/cuda13.0-pip/features diff --git a/.devcontainer/cuda13.0-conda/devcontainer.json b/.devcontainer/cuda13.0-conda/devcontainer.json deleted file mode 100644 index bca4e1047..000000000 --- a/.devcontainer/cuda13.0-conda/devcontainer.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/rapids.Dockerfile", - "args": { - "CUDA": "13.0", - "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:26.08-cpp-mambaforge" - }, - "cacheFrom": [ - "ghcr.io/rapidsai/devcontainers/devcontainer:26.08-cuda13.0-conda" - ] - }, - "runArgs": [ - "--rm", - "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.0-conda", - "--ulimit", - "nofile=500000" - ], - "containerEnv": {"PYTHON_VERSION": "3.13"}, - "hostRequirements": {"gpu": "optional"}, - "features": { - "./features/src/cuda": { - "version": "13.0", - "installCompilers": false, - "installProfilers": true, - "installCTKLibraries": false, - "installDevPackages": false, - "installcuDNN": false, - "installcuTensor": false, - "installNCCL": false, - "installCUDARuntime": false, - "installNVRTC": false, - "installOpenCL": false, - "installcuBLAS": false, - "installcuSPARSE": false, - "installcuFFT": false, - "installcuFile": false, - "installcuRAND": false, - "installcuSOLVER": false, - "installNPP": false, - "installnvJPEG": false, - "pruneStaticLibs": true - }, - "./features/src/utils": {}, - "./features/src/rapids-build-utils": {} - }, - "overrideFeatureInstallOrder": [ - "./features/src/cuda", - "./features/src/utils", - "./features/src/rapids-build-utils" - ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.0-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,nvforest,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], - "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", - "mounts": [ - "source=/etc/timezone,target=/etc/timezone,type=bind,consistency=consistent", - "source=/etc/localtime,target=/etc/localtime,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../dask-cuda,target=/home/coder/dask-cuda,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../kvikio,target=/home/coder/kvikio,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../ucxx,target=/home/coder/ucxx,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../rapidsmpf,target=/home/coder/rapidsmpf,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../raft,target=/home/coder/raft,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuvs,target=/home/coder/cuvs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuml,target=/home/coder/cuml,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../nvforest,target=/home/coder/nvforest,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.0-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.log/devcontainer-utils,target=/var/log/devcontainer-utils,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/cuda13.0-conda/features/src/utils/opt/devcontainer/bin,target=/opt/devcontainer/bin,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/cuda13.0-conda/features/src/rapids-build-utils/opt/rapids-build-utils,target=/opt/rapids-build-utils,type=bind,consistency=consistent" - ], - "customizations": { - "vscode": { - "extensions": [ - "augustocdias.tasks-shell-input", - "ms-python.flake8", - "nvidia.nsight-vscode-edition" - ], - "settings": { - "files.watcherExclude": { - "**/build/**": true, - "**/_skbuild/**": true, - "**/target/**": true, - "/home/coder/.aws/**/*": true, - "/home/coder/.cache/**/*": true, - "/home/coder/.conda/**/*": true, - "/home/coder/.local/share/**/*": true, - "/home/coder/.vscode-server/**/*": true - }, - "search.exclude": { - "**/build/**": true, - "**/_skbuild/**": true, - "**/*.code-search": true, - "/home/coder/.aws/**/*": true, - "/home/coder/.cache/**/*": true, - "/home/coder/.conda/**/*": true, - "/home/coder/.local/share/**/*": true, - "/home/coder/.vscode-server/**/*": true - } - } - } - } -} diff --git a/.devcontainer/cuda13.0-conda/features b/.devcontainer/cuda13.0-conda/features deleted file mode 120000 index c9012f296..000000000 --- a/.devcontainer/cuda13.0-conda/features +++ /dev/null @@ -1 +0,0 @@ -../../features \ No newline at end of file diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json deleted file mode 100644 index 43b19fb91..000000000 --- a/.devcontainer/cuda13.0-pip/devcontainer.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/rapids.Dockerfile", - "args": { - "CUDA": "13.0", - "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:26.08-cpp-cuda13.0-ucx1.19.0-openmpi5.0.10" - }, - "cacheFrom": [ - "ghcr.io/rapidsai/devcontainers/devcontainer:26.08-cuda13.0-pip" - ] - }, - "runArgs": [ - "--rm", - "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.0-pip", - "--ulimit", - "nofile=500000" - ], - "hostRequirements": {"gpu": "optional"}, - "features": { - "./features/src/cuda": { - "version": "13.0", - "cuDNNVersion": "9", - "installcuBLAS": true, - "installcuDNN": true, - "installcuDSS": true, - "installcuSOLVER": true, - "installcuRAND": true, - "installcuSPARSE": true, - "installProfilers": true - }, - "./features/src/utils": {}, - "./features/src/rapids-build-utils": {} - }, - "overrideFeatureInstallOrder": [ - "./features/src/cuda", - "./features/src/utils", - "./features/src/rapids-build-utils" - ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,nvforest,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], - "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", - "mounts": [ - "source=/etc/timezone,target=/etc/timezone,type=bind,consistency=consistent", - "source=/etc/localtime,target=/etc/localtime,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../dask-cuda,target=/home/coder/dask-cuda,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../kvikio,target=/home/coder/kvikio,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../ucxx,target=/home/coder/ucxx,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../raft,target=/home/coder/raft,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../rapidsmpf,target=/home/coder/rapidsmpf,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuvs,target=/home/coder/cuvs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuml,target=/home/coder/cuml,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../nvforest,target=/home/coder/nvforest,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.log/devcontainer-utils,target=/var/log/devcontainer-utils,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/cuda13.0-pip/features/src/utils/opt/devcontainer/bin,target=/opt/devcontainer/bin,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/cuda13.0-pip/features/src/rapids-build-utils/opt/rapids-build-utils,target=/opt/rapids-build-utils,type=bind,consistency=consistent" - ], - "customizations": { - "vscode": { - "extensions": [ - "augustocdias.tasks-shell-input", - "ms-python.flake8", - "nvidia.nsight-vscode-edition" - ], - "settings": { - "files.watcherExclude": { - "**/build/**": true, - "**/_skbuild/**": true, - "**/target/**": true, - "/home/coder/.aws/**/*": true, - "/home/coder/.cache/**/*": true, - "/home/coder/.conda/**/*": true, - "/home/coder/.local/share/**/*": true, - "/home/coder/.vscode-server/**/*": true - }, - "search.exclude": { - "**/build/**": true, - "**/_skbuild/**": true, - "**/*.code-search": true, - "/home/coder/.aws/**/*": true, - "/home/coder/.cache/**/*": true, - "/home/coder/.conda/**/*": true, - "/home/coder/.local/share/**/*": true, - "/home/coder/.vscode-server/**/*": true - } - } - } - } -} diff --git a/.devcontainer/cuda13.0-pip/features b/.devcontainer/cuda13.0-pip/features deleted file mode 120000 index c9012f296..000000000 --- a/.devcontainer/cuda13.0-pip/features +++ /dev/null @@ -1 +0,0 @@ -../../features \ No newline at end of file diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml index b1e14d45e..5e8189958 100644 --- a/.github/workflows/build-devcontainers.yml +++ b/.github/workflows/build-devcontainers.yml @@ -11,10 +11,10 @@ on: 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.9-pip/' and '.devcontainer/cuda13.1-pip/', - '["12.9", "13.1"]' could be passed here to build both of those devcontainers in CI. + For example, if a repository has directories '.devcontainer/cuda12.9-pip/' and '.devcontainer/cuda13.2-pip/', + '["12.9", "13.2"]' could be passed here to build both of those devcontainers in CI. type: string - default: '["12.9", "13.1"]' + default: '["12.9", "13.2"]' python_package_manager: description: | Stringified JSON array of Python package managers to run devcontainer builds for. @@ -30,10 +30,10 @@ on: 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.9-pip/' and '.devcontainer/cuda13.1-pip/', - '["12.9", "13.1"]' could be passed here to build both of those devcontainers in CI. + For example, if a repository has directories '.devcontainer/cuda12.9-pip/' and '.devcontainer/cuda13.2-pip/', + '["12.9", "13.2"]' could be passed here to build both of those devcontainers in CI. type: string - default: '["12.9", "13.1"]' + default: '["12.9", "13.2"]' python_package_manager: description: | Stringified JSON array of Python package managers to run devcontainer builds for. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 483cf2a50..12c4e467b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -140,7 +140,7 @@ jobs: packages: write with: push: true - cuda: '["12.9", "13.0", "13.1"]' + cuda: '["12.9", "13.2"]' build-devcontainers-after-features-released: if: needs.image-matrix.outputs.linux == '{"include":[]}' && (needs.features-matrix.outputs.features != '[]' || needs.features-matrix.outputs.scenarios != '[]') @@ -152,4 +152,4 @@ jobs: packages: write with: push: true - cuda: '["12.9", "13.0", "13.1"]' + cuda: '["12.9", "13.2"]' diff --git a/.github/workflows/test-rapids-build-times.yml b/.github/workflows/test-rapids-build-times.yml index 813f010e7..c67d6333c 100644 --- a/.github/workflows/test-rapids-build-times.yml +++ b/.github/workflows/test-rapids-build-times.yml @@ -55,7 +55,7 @@ jobs: with: arch: '["amd64", "arm64"]' - cuda: '["12.9", "13.1"]' + cuda: '["12.9", "13.2"]' node_type: ${{ inputs.node_type }} timeout-minutes: 720 # 1. Prohibit sccache from shutting down automatically From 315bbd02ea009a1889399078614e737dd2a6cded Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 18 May 2026 20:57:28 -0700 Subject: [PATCH 10/11] switch workflow branches to main, add zizmor execptions --- .github/workflows/build-devcontainers.yml | 4 ++-- .github/workflows/release.yml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-devcontainers.yml b/.github/workflows/build-devcontainers.yml index 5e8189958..69afcdf71 100644 --- a/.github/workflows/build-devcontainers.yml +++ b/.github/workflows/build-devcontainers.yml @@ -47,8 +47,8 @@ on: jobs: build: name: Build devcontainers - secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@main # zizmor: ignore[unpinned-uses] permissions: packages: write with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12c4e467b..5eab0868b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -134,8 +134,8 @@ jobs: if: needs.image-matrix.outputs.linux != '{"include":[]}' needs: [image-matrix, release-linux] name: Build devcontainers - secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@main # zizmor: ignore[unpinned-uses] permissions: packages: write with: @@ -146,8 +146,8 @@ jobs: if: needs.image-matrix.outputs.linux == '{"include":[]}' && (needs.features-matrix.outputs.features != '[]' || needs.features-matrix.outputs.scenarios != '[]') needs: [features-matrix, release-features] name: Build devcontainers - secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@fea/build-devcontainer + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@main # zizmor: ignore[unpinned-uses] permissions: packages: write with: From 6eee2bf3a72d5df6f302c49fe3cb4269217aff3a Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 18 May 2026 21:01:27 -0700 Subject: [PATCH 11/11] add image-matrix to needs --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5eab0868b..98bc8c10f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -144,7 +144,7 @@ jobs: build-devcontainers-after-features-released: if: needs.image-matrix.outputs.linux == '{"include":[]}' && (needs.features-matrix.outputs.features != '[]' || needs.features-matrix.outputs.scenarios != '[]') - needs: [features-matrix, release-features] + needs: [image-matrix, features-matrix, release-features] name: Build devcontainers secrets: inherit # zizmor: ignore[secrets-inherit] uses: rapidsai/shared-workflows/.github/workflows/build-devcontainers.yaml@main # zizmor: ignore[unpinned-uses]