From 59bd530aafc255e125ff197a1f7eb3df9eb76292 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:46:30 +0800 Subject: [PATCH] chore(deps): update GitHub Actions to mature release tags --- .../workflows/build-exe-for-python-sdk.yml | 18 ++--- .../workflows/build-preview-cloudflare.yml | 8 +-- .github/workflows/ci-master.yml | 40 +++++------ .github/workflows/ci.yml | 70 +++++++++---------- .github/workflows/docs-pages.yml | 6 +- .github/workflows/e2e.yml | 6 +- .github/workflows/expected-filenames.yml | 2 +- .../workflows/node-addon-system-release.yml | 26 +++---- .github/workflows/node-addon-system.yml | 14 ++-- .github/workflows/pi-ai-provider-e2e.yml | 6 +- .github/workflows/python-release.yml | 14 ++-- .github/workflows/release-publish.yml | 18 ++--- .github/workflows/release-vendor-publish.yml | 18 ++--- .github/workflows/release-vendor.yml | 10 +-- .github/workflows/release.yml | 18 ++--- .github/workflows/sandbox.yml | 12 ++-- scripts/ci-compatible-selfhosted.spec.ts | 6 +- scripts/ci-workflow.spec.ts | 10 +-- scripts/preview-workflow.spec.ts | 4 +- scripts/tests/ci-master-platforms.spec.ts | 2 +- scripts/tests/ci-release-selfhosted.spec.ts | 10 +-- 21 files changed, 159 insertions(+), 159 deletions(-) diff --git a/.github/workflows/build-exe-for-python-sdk.yml b/.github/workflows/build-exe-for-python-sdk.yml index 0333f4ced1..ef87e59360 100644 --- a/.github/workflows/build-exe-for-python-sdk.yml +++ b/.github/workflows/build-exe-for-python-sdk.yml @@ -72,7 +72,7 @@ jobs: version: ${{ steps.version.outputs.version }} repository-version: ${{ steps.version.outputs.repository-version }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - name: Resolve repository version id: version @@ -130,7 +130,7 @@ jobs: && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} timeout-minutes: 5 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - uses: actions/setup-python@v6.3.0 with: @@ -145,7 +145,7 @@ jobs: --package sdk --output-dir dist-python - - uses: actions/upload-artifact@v7 + - uses: actions/upload-artifact@v7.0.1 with: name: deepseek_harness_sdk-${{ needs.plan.outputs.version }}-py3-none-any.whl path: dist-python/deepseek_harness_sdk-${{ needs.plan.outputs.version }}-py3-none-any.whl @@ -168,11 +168,11 @@ jobs: matrix: include: ${{ fromJSON(needs.plan.outputs.matrix) }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-js-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} @@ -185,7 +185,7 @@ jobs: # setup-node's built-in pnpm store cache keys on platform AND arch, so # the Linux architectures sharing runner.os stay on separate caches. - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm @@ -199,7 +199,7 @@ jobs: # Cache pkg's target Node binary; lockfile changes roll the # exact key while the restore prefix can seed its replacement. - - uses: actions/cache@v4 + - uses: actions/cache@v6.1.0 with: path: ~/.pkg-cache key: pkg-fetch-${{ matrix.target }}-${{ hashFiles('pnpm-lock.yaml') }} @@ -311,7 +311,7 @@ jobs: --runtime-exe "${{ steps.runtime-posix.outputs.exe || steps.runtime-windows.outputs.exe }}" --output-dir dist-python - - uses: actions/download-artifact@v8 + - uses: actions/download-artifact@v8.0.1 with: name: deepseek_harness_sdk-${{ needs.plan.outputs.version }}-py3-none-any.whl path: dist-python @@ -500,7 +500,7 @@ jobs: env -u PYTHONPATH -u DSH_RUNTIME_MODE /tmp/dsh-sdk/bin/python /work/scripts/smoke-python-runtime.py --scenario sdk-mcp --installed-wheel ' - - uses: actions/upload-artifact@v7 + - uses: actions/upload-artifact@v7.0.1 with: name: ${{ steps.runtime-posix.outputs.wheel || steps.runtime-windows.outputs.wheel }} path: dist-python/${{ steps.runtime-posix.outputs.wheel || steps.runtime-windows.outputs.wheel }} diff --git a/.github/workflows/build-preview-cloudflare.yml b/.github/workflows/build-preview-cloudflare.yml index 1b5ee1bde5..fa741113e4 100644 --- a/.github/workflows/build-preview-cloudflare.yml +++ b/.github/workflows/build-preview-cloudflare.yml @@ -35,15 +35,15 @@ jobs: runs-on: ubuntu-24.04 name: cloudflare pages preview steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -57,7 +57,7 @@ jobs: # Read-only: the preview lane consumes the default-branch cache without # putting cache upload on its own path. - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} diff --git a/.github/workflows/ci-master.yml b/.github/workflows/ci-master.yml index 2fdaecb505..e530259e4d 100644 --- a/.github/workflows/ci-master.yml +++ b/.github/workflows/ci-master.yml @@ -48,15 +48,15 @@ jobs: name: windows node 24 / wine timeout-minutes: 15 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -68,7 +68,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} @@ -80,7 +80,7 @@ jobs: id: wine-cache-key run: echo "key=wine-debs-${ImageOS:-linux}-${ImageVersion:-v0}" >> "$GITHUB_OUTPUT" - - uses: actions/cache@v4 + - uses: actions/cache@v6.1.0 with: path: ~/wine-debs key: ${{ steps.wine-cache-key.outputs.key }} @@ -139,7 +139,7 @@ jobs: # github.event.before, so full history is required: depth 2 would miss it # on multi-commit or force pushes; full fetch is cheap here because # checkout resolves against the VM's local mirror. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 @@ -149,11 +149,11 @@ jobs: - name: Redirect Node compile cache to runner temp run: echo "NODE_COMPILE_CACHE=${{ runner.temp }}/node-compile-cache" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -191,13 +191,13 @@ jobs: name: serial / macos runs-on: macos-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -230,7 +230,7 @@ jobs: runs-on: [self-hosted, dsh-win-ci, windows] timeout-minutes: 120 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - name: Enable Developer Mode (symlink support) shell: pwsh @@ -238,11 +238,11 @@ jobs: reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -356,15 +356,15 @@ jobs: blacksmith: '' workload: production-site steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} # The benchmark's Windows lanes deliberately skip the store cache like # the independent native Windows job; an empty input disables caching. - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} cache: ${{ matrix.platform == 'linux' && 'pnpm' || '' }} @@ -467,15 +467,15 @@ jobs: blacksmith: '' workers: '2' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} # Unlike the larger-runner suite, both platforms cache the store here: # the consolidated topology measures cache mechanics as workload. - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} cache: pnpm diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2973a365b..0b28fc5c42 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" # Fetch complete history so the archive gate can read the trusted PR base from a reused shallow checkout. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false @@ -71,11 +71,11 @@ jobs: - name: Redirect Node compile cache to runner temp run: echo "NODE_COMPILE_CACHE=${{ runner.temp }}/node-compile-cache" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -90,7 +90,7 @@ jobs: # Pull requests consume the default-branch cache but do not put cache # compression and upload on the paid latency-critical path. Skipped # under failover — see the coverage lane's identical rationale. - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: vars.DSH_CI_FAILOVER_LINUX != 'selfhosted' || github.event.pull_request.user.login == 'dependabot[bot]' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -137,12 +137,12 @@ jobs: run: | echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - name: Restore coverage duration history - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v6.1.0 with: path: .coverage-times.json key: coverage-times-Linux-${{ runner.environment }}-${{ vars.DSH_CI_FAILOVER_LINUX || 'enterprise' }}-${{ github.run_id }}-${{ github.run_attempt }} @@ -154,11 +154,11 @@ jobs: - name: Redirect Node compile cache to runner temp run: echo "NODE_COMPILE_CACHE=${{ runner.temp }}/node-compile-cache" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -172,7 +172,7 @@ jobs: # Self-hosted runners reuse the shared persistent pnpm store. # Hosted runners restore the remote cache into their ephemeral store. - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: vars.DSH_CI_FAILOVER_LINUX != 'selfhosted' || github.event.pull_request.user.login == 'dependabot[bot]' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -198,7 +198,7 @@ jobs: - name: Save coverage duration history if: ${{ !cancelled() }} - uses: actions/cache/save@v4 + uses: actions/cache/save@v6.1.0 with: path: .coverage-times.json key: coverage-times-Linux-${{ runner.environment }}-${{ vars.DSH_CI_FAILOVER_LINUX || 'enterprise' }}-${{ github.run_id }}-${{ github.run_attempt }} @@ -211,15 +211,15 @@ jobs: # benchmark lane alone instead of joining a concurrent gate aggregate. timeout-minutes: 20 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -231,7 +231,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} @@ -277,7 +277,7 @@ jobs: echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" echo "PLAYWRIGHT_BROWSERS_PATH=${RUNNER_TEMP%/*}/ms-playwright" >> "$GITHUB_ENV" - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false @@ -286,11 +286,11 @@ jobs: - name: Redirect Node compile cache to runner temp run: echo "NODE_COMPILE_CACHE=${{ runner.temp }}/node-compile-cache" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -307,7 +307,7 @@ jobs: # hosted cache keys, so each restore-keys fallback hits the matching archived # entry until it evicts, after which the store is cold. Self-hosted runners # reuse the shared persistent store instead of restoring the remote archive. - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: vars.DSH_CI_FAILOVER_LINUX != 'selfhosted' || github.event.pull_request.user.login == 'dependabot[bot]' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -316,7 +316,7 @@ jobs: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm- # Self-hosted runners retain their own browser cache between jobs. - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: vars.DSH_CI_FAILOVER_LINUX != 'selfhosted' || github.event.pull_request.user.login == 'dependabot[bot]' with: path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }} @@ -417,7 +417,7 @@ jobs: runner: ubuntu-latest gate_concurrency: '1' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false @@ -429,11 +429,11 @@ jobs: echo "npm_config_devdir=$RUNNER_TEMP/node-gyp" >> "$GITHUB_ENV" echo "PNPM_CONFIG_STORE_DIR=$HOME/.local/share/pnpm/store" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 env: # The runner overwrites RUNNER_* step env before starting JavaScript actions. NODE_OPTIONS: ${{ runner.environment == 'self-hosted' && '--import=./scripts/ci-compatible-toolcache.mjs' || '' }} @@ -474,7 +474,7 @@ jobs: runs-on: ubuntu-latest name: python 3.10 / keyless SDK steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - uses: actions/setup-python@v6.3.0 with: @@ -484,7 +484,7 @@ jobs: - name: Install uv run: python -m pip install uv==0.11.23 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 @@ -528,7 +528,7 @@ jobs: # A failing build or site aborts the sibling gate on the same runner. DSH_GATE_FAIL_FAST: '1' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - name: Enable Developer Mode (symlink support) @@ -536,10 +536,10 @@ jobs: run: >- reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-js-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} - name: Install (immutable) @@ -596,7 +596,7 @@ jobs: # multi-minute instrumented run. DSH_GATE_FAIL_FAST: '1' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false # Checkout removes the gitignored duration history, so restore it from @@ -606,7 +606,7 @@ jobs: # entries are immutable, so the save key is unique per run and the # restore matches the newest entry through the stable prefix. - name: Restore coverage duration history - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v6.1.0 with: path: .coverage-times.json key: coverage-times-Windows-${{ runner.environment }}-${{ vars.DSH_CI_FAILOVER_WINDOWS || 'enterprise' }}-${{ github.run_id }}-${{ github.run_attempt }} @@ -617,10 +617,10 @@ jobs: run: >- reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-js-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} - name: Install (immutable) @@ -649,7 +649,7 @@ jobs: # measured durations remain useful even when a partition failed. The # per-run key keeps every save a fresh immutable cache entry. if: ${{ !cancelled() }} - uses: actions/cache/save@v4 + uses: actions/cache/save@v6.1.0 with: path: .coverage-times.json key: coverage-times-Windows-${{ runner.environment }}-${{ vars.DSH_CI_FAILOVER_WINDOWS || 'enterprise' }}-${{ github.run_id }}-${{ github.run_attempt }} @@ -665,7 +665,7 @@ jobs: name: windows node 24 / native tests timeout-minutes: 60 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - name: Enable Developer Mode (symlink support) @@ -673,10 +673,10 @@ jobs: run: >- reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-js-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} - name: Install (immutable) diff --git a/.github/workflows/docs-pages.yml b/.github/workflows/docs-pages.yml index 6cd25b059d..b43ebad307 100644 --- a/.github/workflows/docs-pages.yml +++ b/.github/workflows/docs-pages.yml @@ -41,14 +41,14 @@ jobs: pages: read steps: # Complete history: the release scripts read tags. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} cache: pnpm diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 6fb50bde2d..b4992c17aa 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -67,11 +67,11 @@ jobs: # and retry 2; 45m still bounds retry storms against a slow API. timeout-minutes: 45 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm diff --git a/.github/workflows/expected-filenames.yml b/.github/workflows/expected-filenames.yml index 99c9886e35..12ff5d7bc7 100644 --- a/.github/workflows/expected-filenames.yml +++ b/.github/workflows/expected-filenames.yml @@ -22,7 +22,7 @@ jobs: ${{ vars.DSH_CI_FAILOVER_LINUX == 'blacksmith' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - name: Check tracked filenames run: scripts/check-expected-filenames.sh diff --git a/.github/workflows/node-addon-system-release.yml b/.github/workflows/node-addon-system-release.yml index 6c5596232b..1a2da7efa8 100644 --- a/.github/workflows/node-addon-system-release.yml +++ b/.github/workflows/node-addon-system-release.yml @@ -32,7 +32,7 @@ jobs: outputs: prebuilds: ${{ steps.matrix.outputs.prebuilds }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - id: matrix run: echo "prebuilds=$(node ./scripts/github-matrix.mjs release-prebuild)" >> "$GITHUB_OUTPUT" @@ -45,13 +45,13 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.matrix.outputs.prebuilds) }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: package_json_file: package.json - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm @@ -80,7 +80,7 @@ jobs: pnpm test:packaging - name: Upload prebuild artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: ${{ matrix.artifact }} path: native/system/${{ matrix.dir }}/bin/** @@ -92,13 +92,13 @@ jobs: needs: build-prebuilds runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: package_json_file: package.json - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm @@ -116,7 +116,7 @@ jobs: RELEASE_PUBLISH: ${{ inputs.publish }} - name: Download prebuild artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8.0.1 with: pattern: prebuild-* path: native/system/.release/prebuild-artifacts @@ -138,7 +138,7 @@ jobs: NALR_REQUIRE_LANDLOCK: 1 - name: Upload npm tarballs - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: npm-tarballs path: native/system/dist/npm/* @@ -157,17 +157,17 @@ jobs: steps: # The publish script is the only repository file this job needs, and it # imports nothing outside Node's builtins, so there is no install step. - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 registry-url: https://registry.npmjs.org - name: Download npm tarballs - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8.0.1 with: name: npm-tarballs path: native/system/dist/npm diff --git a/.github/workflows/node-addon-system.yml b/.github/workflows/node-addon-system.yml index a763a2a8d2..b443905367 100644 --- a/.github/workflows/node-addon-system.yml +++ b/.github/workflows/node-addon-system.yml @@ -48,7 +48,7 @@ jobs: outputs: ci: ${{ steps.matrix.outputs.ci }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - id: matrix run: echo "ci=$(node ./scripts/github-matrix.mjs ci)" >> "$GITHUB_OUTPUT" @@ -61,13 +61,13 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.matrix.outputs.ci) }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: package_json_file: package.json - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm @@ -125,7 +125,7 @@ jobs: node:24-alpine node --test ./test/flock.test.js ./test/package-matrix.test.js - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 20 @@ -139,7 +139,7 @@ jobs: node:20-alpine node --test ./test/flock.test.js ./test/package-matrix.test.js - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 22 @@ -153,7 +153,7 @@ jobs: node:22-alpine node --test ./test/flock.test.js ./test/package-matrix.test.js - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7.0.0 with: node-version: 26 diff --git a/.github/workflows/pi-ai-provider-e2e.yml b/.github/workflows/pi-ai-provider-e2e.yml index 255c7654e7..ec1e2b2795 100644 --- a/.github/workflows/pi-ai-provider-e2e.yml +++ b/.github/workflows/pi-ai-provider-e2e.yml @@ -30,11 +30,11 @@ jobs: name: Azure OpenAI Responses + Anthropic Messages timeout-minutes: 20 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 cache: pnpm diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml index b756f5bf38..0474ccfe92 100644 --- a/.github/workflows/python-release.yml +++ b/.github/workflows/python-release.yml @@ -40,7 +40,7 @@ jobs: matrix: python: ['3.10', '3.14'] steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false @@ -48,7 +48,7 @@ jobs: with: python-version: ${{ matrix.python }} - - uses: actions/download-artifact@v8 + - uses: actions/download-artifact@v8.0.1 with: pattern: deepseek_harness_* path: dist @@ -83,7 +83,7 @@ jobs: outputs: version: ${{ steps.version.outputs.version }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false @@ -134,7 +134,7 @@ jobs: } fi - - uses: actions/download-artifact@v8 + - uses: actions/download-artifact@v8.0.1 with: pattern: deepseek_harness_* path: dist @@ -175,7 +175,7 @@ jobs: sha256sum *.whl | sort -k2 > SHA256SUMS cat SHA256SUMS - - uses: actions/upload-artifact@v7 + - uses: actions/upload-artifact@v7.0.1 with: name: python-release-${{ steps.version.outputs.version }} path: dist/* @@ -193,7 +193,7 @@ jobs: contents: read id-token: write steps: - - uses: actions/download-artifact@v8 + - uses: actions/download-artifact@v8.0.1 with: name: python-release-${{ needs.validate.outputs.version }} path: dist @@ -228,7 +228,7 @@ jobs: contents: read id-token: write steps: - - uses: actions/download-artifact@v8 + - uses: actions/download-artifact@v8.0.1 with: name: python-release-${{ needs.validate.outputs.version }} path: dist diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index cdee5ce196..88583f9612 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,16 +21,16 @@ jobs: runs-on: ubuntu-24.04 steps: # Complete history: the release scripts read tags. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -42,7 +42,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} @@ -82,7 +82,7 @@ jobs: - name: Verify packed install run: pnpm run release:verify-packed-install --family dsh --from dist/npm --from dist/npm-vendor --from dist/npm-landlock - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: dsh-npm-tarballs path: dist/npm/* @@ -104,15 +104,15 @@ jobs: steps: # Checkout and install carry the release scripts only. There is no build # step: publication uploads the bytes the pack job produced. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} registry-url: https://registry.npmjs.org @@ -120,7 +120,7 @@ jobs: - name: Install (immutable, no package scripts) run: pnpm install --frozen-lockfile --ignore-scripts - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8.0.1 with: name: dsh-npm-tarballs path: dist/npm diff --git a/.github/workflows/release-vendor-publish.yml b/.github/workflows/release-vendor-publish.yml index a7c620fad3..0b06315fdb 100644 --- a/.github/workflows/release-vendor-publish.yml +++ b/.github/workflows/release-vendor-publish.yml @@ -27,16 +27,16 @@ jobs: runs-on: ubuntu-24.04 steps: # Complete history: the release scripts read tags. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} @@ -48,7 +48,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} @@ -74,7 +74,7 @@ jobs: - name: Verify packed install run: pnpm run release:verify-packed-install --family vendor --from dist/npm-vendor - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: vendor-npm-tarballs path: dist/npm-vendor/* @@ -93,15 +93,15 @@ jobs: contents: read steps: # Checkout and install carry the release scripts only; no build step. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} registry-url: https://registry.npmjs.org @@ -109,7 +109,7 @@ jobs: - name: Install (immutable, no package scripts) run: pnpm install --frozen-lockfile --ignore-scripts - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8.0.1 with: name: vendor-npm-tarballs path: dist/npm-vendor diff --git a/.github/workflows/release-vendor.yml b/.github/workflows/release-vendor.yml index bf0bdf082e..8d74684943 100644 --- a/.github/workflows/release-vendor.yml +++ b/.github/workflows/release-vendor.yml @@ -43,7 +43,7 @@ jobs: || 'ubuntu-24.04' }} steps: # Complete history: the release scripts read tags. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false @@ -55,11 +55,11 @@ jobs: echo "npm_config_devdir=${{ runner.temp }}/node-gyp" >> "$GITHUB_ENV" echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} package-manager-cache: false @@ -72,7 +72,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: runner.environment == 'github-hosted' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -99,7 +99,7 @@ jobs: - name: Verify packed install run: pnpm run release:verify-packed-install --family vendor --from dist/npm-vendor - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: vendor-npm-tarballs path: dist/npm-vendor/* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ba151e22e9..7d9b4c119e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: && fromJSON('["self-hosted", "linux", "x64", "vm-backup"]') || 'ubuntu-24.04' }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: persist-credentials: false clean: true @@ -52,11 +52,11 @@ jobs: echo "npm_config_devdir=${{ runner.temp }}/node-gyp" >> "$GITHUB_ENV" echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} package-manager-cache: false @@ -69,7 +69,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: runner.environment == 'github-hosted' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -102,7 +102,7 @@ jobs: || 'ubuntu-24.04' }} steps: # Complete history: the release scripts read tags. - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 with: fetch-depth: 0 persist-credentials: false @@ -114,11 +114,11 @@ jobs: echo "npm_config_devdir=${{ runner.temp }}/node-gyp" >> "$GITHUB_ENV" echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 with: dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: ${{ env.PRIMARY_NODE_VERSION }} package-manager-cache: false @@ -131,7 +131,7 @@ jobs: store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent) echo "path=$store_path" >> "$GITHUB_OUTPUT" - - uses: actions/cache/restore@v4 + - uses: actions/cache/restore@v6.1.0 if: runner.environment == 'github-hosted' with: path: ${{ steps.pnpm-store.outputs.path }} @@ -172,7 +172,7 @@ jobs: - name: Verify packed install run: pnpm run release:verify-packed-install --family dsh --from dist/npm --from dist/npm-vendor --from dist/npm-landlock - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: dsh-npm-tarballs path: dist/npm/* diff --git a/.github/workflows/sandbox.yml b/.github/workflows/sandbox.yml index 46c6ac71f2..0822714650 100644 --- a/.github/workflows/sandbox.yml +++ b/.github/workflows/sandbox.yml @@ -66,11 +66,11 @@ jobs: || matrix.os }} timeout-minutes: 20 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 @@ -146,11 +146,11 @@ jobs: runs-on: macos-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7.0.1 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6.1.0 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7.0.0 with: node-version: 24 diff --git a/scripts/ci-compatible-selfhosted.spec.ts b/scripts/ci-compatible-selfhosted.spec.ts index 5e6e2dad9a..7e22a324d6 100644 --- a/scripts/ci-compatible-selfhosted.spec.ts +++ b/scripts/ci-compatible-selfhosted.spec.ts @@ -82,7 +82,7 @@ describe('Node compatibility self-hosted routing', () => { }) it('isolates version installs and enables hosted package caching only on hosted runners', () => { - const setup = job.steps.find(step => step.uses === 'actions/setup-node@v6')! + const setup = job.steps.find(step => step.uses === 'actions/setup-node@v7.0.0')! expect(setup.env).toEqual({ NODE_OPTIONS: "${{ runner.environment == 'self-hosted' && '--import=./scripts/ci-compatible-toolcache.mjs' || '' }}", }) @@ -100,7 +100,7 @@ describe('Node compatibility self-hosted routing', () => { }) it('overrides runner exports inside setup-node without affecting later Node processes', () => { - const setup = job.steps.find(step => step.uses === 'actions/setup-node@v6')! + const setup = job.steps.find(step => step.uses === 'actions/setup-node@v7.0.0')! const nodeOptions = evaluate(setup.env!.NODE_OPTIONS!, { runner: { environment: 'self-hosted' } }) as string const root = mkdtempSync(join(tmpdir(), 'ci-compatible preload-')) try { @@ -150,7 +150,7 @@ describe('Node compatibility self-hosted routing', () => { const index = job.steps.findIndex(step => step.name === 'Isolate compatibility caches') const step = job.steps[index]! expect(index).toBeGreaterThan(0) - expect(index).toBeLessThan(job.steps.findIndex(candidate => candidate.uses === 'pnpm/action-setup@v4')) + expect(index).toBeLessThan(job.steps.findIndex(candidate => candidate.uses === 'pnpm/action-setup@v6.1.0')) expect(step.if).toBe("runner.environment == 'self-hosted'") const root = mkdtempSync(join(tmpdir(), 'ci-compatible-selfhosted-')) try { diff --git a/scripts/ci-workflow.spec.ts b/scripts/ci-workflow.spec.ts index b6befbe5cf..bcc572762f 100644 --- a/scripts/ci-workflow.spec.ts +++ b/scripts/ci-workflow.spec.ts @@ -194,7 +194,7 @@ describe('CI workflow', () => { const job = workflowJob(loadWorkflow('.github/workflows/ci.yml'), jobName) if (!Array.isArray(job.steps)) throw new TypeError(`${jobName} must define steps`) const steps = job.steps.filter(isRecord) - const checkout = steps.findIndex(step => step.uses === 'actions/checkout@v6') + const checkout = steps.findIndex(step => step.uses === 'actions/checkout@v7.0.1') const restore = steps.findIndex(step => step.name === 'Restore coverage duration history') const coverage = steps.findIndex(step => step.run === command) const save = steps.findIndex(step => step.name === 'Save coverage duration history') @@ -205,11 +205,11 @@ describe('CI workflow', () => { expect(coverage).toBeGreaterThan(restore) expect(save).toBeGreaterThan(coverage) expect(steps[restore]).toMatchObject({ - uses: 'actions/cache/restore@v4', + uses: 'actions/cache/restore@v6.1.0', with: { path: '.coverage-times.json', key, 'restore-keys': `${prefix}\n` }, }) expect(steps[save]).toMatchObject({ - uses: 'actions/cache/save@v4', + uses: 'actions/cache/save@v6.1.0', if: '${{ !cancelled() }}', with: { path: '.coverage-times.json', key }, }) @@ -261,7 +261,7 @@ describe('CI workflow', () => { if (jobName === 'node-24-consumers') { const browserCache: unknown = job.steps.find(step => isRecord(step) && isRecord(step.with) && step.with.path === '${{ env.PLAYWRIGHT_BROWSERS_PATH }}') - expect(browserCache).toMatchObject({ uses: 'actions/cache/restore@v4' }) + expect(browserCache).toMatchObject({ uses: 'actions/cache/restore@v6.1.0' }) } const store: unknown = job.steps.find(step => isRecord(step) && step.name === 'Configure pnpm store path') expect(store).toMatchObject({ @@ -623,7 +623,7 @@ describe('CI workflow', () => { it('always restores the hosted benchmark pnpm cache', () => { const benchmark = workflowJob(loadWorkflow('.github/workflows/ci.yml'), 'node-24-bench') if (!Array.isArray(benchmark.steps)) throw new TypeError('benchmark job must define steps') - const caches = benchmark.steps.filter(step => isRecord(step) && step.uses === 'actions/cache/restore@v4') + const caches = benchmark.steps.filter(step => isRecord(step) && step.uses === 'actions/cache/restore@v6.1.0') expect(caches).toHaveLength(1) expect(caches[0]).not.toHaveProperty('if') diff --git a/scripts/preview-workflow.spec.ts b/scripts/preview-workflow.spec.ts index 224f5a66d3..bec42ad957 100644 --- a/scripts/preview-workflow.spec.ts +++ b/scripts/preview-workflow.spec.ts @@ -21,7 +21,7 @@ describe('PR preview workflow', () => { expect(preview['runs-on']).toBe('ubuntu-24.04') expect(workflow.on).toEqual({ pull_request: { types: ['opened', 'synchronize', 'reopened'] } }) expect(workflow.permissions).toEqual({ contents: 'read', 'pull-requests': 'write' }) - expect(preview.steps.find(step => step.uses === 'actions/checkout@v6')?.with).toEqual({ 'persist-credentials': false }) + expect(preview.steps.find(step => step.uses === 'actions/checkout@v7.0.1')?.with).toEqual({ 'persist-credentials': false }) }) it('keeps the immutable complete artifact build and restore-only dependency cache', () => { @@ -33,7 +33,7 @@ describe('PR preview workflow', () => { expect(commands).toContain('pnpm --filter @deepseek-ai/dsh-web-frontend run build:preview') expect(commands.indexOf('pnpm run build --artifacts-only')).toBeLessThan(commands.indexOf('pnpm --filter @deepseek-ai/dsh-web-frontend run build:preview')) expect(preview.steps.filter(step => step.uses?.startsWith('actions/cache'))).toHaveLength(1) - expect(preview.steps.find(step => step.uses === 'actions/cache/restore@v4')?.with).toMatchObject({ + expect(preview.steps.find(step => step.uses === 'actions/cache/restore@v6.1.0')?.with).toMatchObject({ key: "${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}", }) }) diff --git a/scripts/tests/ci-master-platforms.spec.ts b/scripts/tests/ci-master-platforms.spec.ts index 3cdbb00f9b..5cfe386faf 100644 --- a/scripts/tests/ci-master-platforms.spec.ts +++ b/scripts/tests/ci-master-platforms.spec.ts @@ -128,7 +128,7 @@ describe('master-only platform scheduling', () => { expect(Object.values(master.jobs).flatMap(commands).filter(command => command.includes('wine-windows-gates.sh'))) .toEqual(['bash scripts/wine-windows-gates.sh']) expect(wine.steps).toContainEqual(expect.objectContaining({ - uses: 'actions/cache@v4', with: { path: '~/wine-debs', key: '${{ steps.wine-cache-key.outputs.key }}' }, + uses: 'actions/cache@v6.1.0', with: { path: '~/wine-debs', key: '${{ steps.wine-cache-key.outputs.key }}' }, })) expect(commands(wine).join('\n')).toContain('--download-only wine') expect(wine.steps).toContainEqual(expect.objectContaining({ name: 'Shut down wineserver', if: 'always()' })) diff --git a/scripts/tests/ci-release-selfhosted.spec.ts b/scripts/tests/ci-release-selfhosted.spec.ts index 23dcc7a8df..04df7b0f12 100644 --- a/scripts/tests/ci-release-selfhosted.spec.ts +++ b/scripts/tests/ci-release-selfhosted.spec.ts @@ -102,7 +102,7 @@ for (const [file, jobIds] of [['release.yml', ['dependencies', 'pack']], ['relea expect(evaluate(job['runs-on'], context)).toBe(hosted) }) it('cleans stale checkout output and isolates setup before any pnpm invocation', () => { - expect(job.steps[0]).toMatchObject({ uses: 'actions/checkout@v6', with: { clean: true, 'persist-credentials': false } }) + expect(job.steps[0]).toMatchObject({ uses: 'actions/checkout@v7.0.1', with: { clean: true, 'persist-credentials': false } }) const cacheIndex = job.steps.findIndex(step => step.run?.includes('NODE_COMPILE_CACHE=')) const pnpmIndex = job.steps.findIndex(step => step.uses?.startsWith('pnpm/') || /\bpnpm\b/.test(step.run ?? '')) expect(cacheIndex).toBeGreaterThan(0) @@ -110,7 +110,7 @@ for (const [file, jobIds] of [['release.yml', ['dependencies', 'pack']], ['relea expect(job.steps[cacheIndex]?.run).toContain('echo "NODE_COMPILE_CACHE=${{ runner.temp }}/node-compile-cache" >> "$GITHUB_ENV"') expect(job.steps[cacheIndex]?.run).toContain('echo "npm_config_devdir=${{ runner.temp }}/node-gyp" >> "$GITHUB_ENV"') expect(job.steps[cacheIndex]?.run).toContain('echo "TMPDIR=${{ runner.temp }}" >> "$GITHUB_ENV"') - expect(job.steps.find(step => step.uses === 'pnpm/action-setup@v4')?.with?.dest) + expect(job.steps.find(step => step.uses === 'pnpm/action-setup@v6.1.0')?.with?.dest) .toBe('${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }}') expect(job.steps.find(step => step.name === 'Install (immutable)')?.run).toBe('pnpm install --frozen-lockfile') }) @@ -127,12 +127,12 @@ for (const [file, jobIds] of [['release.yml', ['dependencies', 'pack']], ['relea it('uses the shared persistent store without remote cache reads or writes on self-hosted', () => { assertSharedPersistentStore(job.steps.find(step => step.name === 'Configure pnpm store path')?.run) const caches = job.steps.filter(step => step.uses?.startsWith('actions/cache')) - expect(caches.map(step => step.uses)).toEqual(['actions/cache/restore@v4']) + expect(caches.map(step => step.uses)).toEqual(['actions/cache/restore@v6.1.0']) for (const step of caches) { expect(evaluate(step.if!, { 'runner.environment': 'self-hosted' })).toBe(false) expect(evaluate(step.if!, { 'runner.environment': 'github-hosted' })).toBe(true) } - const nodeSetup = job.steps.find(step => step.uses === 'actions/setup-node@v6') + const nodeSetup = job.steps.find(step => step.uses === 'actions/setup-node@v7.0.0') expect(nodeSetup?.with?.cache).toBeUndefined() expect(nodeSetup?.with?.['package-manager-cache']).toBe(false) }) @@ -152,7 +152,7 @@ for (const [file, jobIds] of [['release.yml', ['dependencies', 'pack']], ['relea expect(commands).toContain('pnpm run release:pack --family ' + family + ' --out ' + output + ' --concurrency 8') expect(commands).toContain('pnpm run release:verify-packed-install --family ' + family + ' --from ' + output + (family === 'dsh' ? ' --from dist/npm-vendor --from dist/npm-landlock' : '')) - expect(job.steps.at(-1)).toMatchObject({ uses: 'actions/upload-artifact@v4', with: { path: output + '/*', 'retention-days': 7 } }) + expect(job.steps.at(-1)).toMatchObject({ uses: 'actions/upload-artifact@v7.0.1', with: { path: output + '/*', 'retention-days': 7 } }) } expect(JSON.stringify(job)).not.toMatch(/secrets\.|release:publish|npm-publish/) })