ci: use the runner image's node instead of setup-node, which downloaded it again on every run
Site / deploy (push) Successful in 2m39s
Gates / test (push) Successful in 2m59s
Gates / frontend (push) Successful in 3m23s
Gates / test-aarch64 (push) Successful in 7m57s
CI / gates (push) Canceled after 22h20m36s
Gates / package (push) Failing after 53s
Gates / container (push) Canceled after 0s

This commit is contained in:
2026-10-21 18:53:42 +02:00
parent 7e0664250b
commit 2a06239676
4 changed files with 23 additions and 24 deletions
+11 -10
View File
@@ -52,8 +52,8 @@ env:
NODE_VERSION: "24.19.0"
# The npm the cut runs and the npm CI runs must be one version: npm writes the
# admin bundle whose bytes the release hashes are pinned to before CI ever
# rebuilds them. setup-node installs the npm that ships with the node above,
# so this pin is asserted, not installed.
# rebuilds them. The runner image ships the npm that comes with the node
# above, so this pin is asserted, not installed.
NPM_VERSION: "11.17.0"
# There is deliberately no CI_VERSION literal here. Ruling 2 allows the
# version to exist in the tag and in build.zig.zon and nowhere else, and
@@ -126,20 +126,21 @@ jobs:
# 1536Mi dind limit, and it runs no docker command — so it overlaps the
# heavy runner's zig and image work instead of queueing behind it.
runs-on: ubuntu-24.04-light
# The slowest green run took 4 minutes. A stalled Node download leaves setup-node
# holding an open socket after its retry succeeds, so the step never exits:
# without a limit the job held the runner for over an hour.
# The slowest green run took 4 minutes. Without a limit, a request stalled
# on the network once held the runner for over an hour.
timeout-minutes: 8
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Set up Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
# The runner image ships this Node and npm on PATH; the assertion below is
# what pins them. setup-node is not used: it looks for Node in an empty
# tool cache and downloads it again on every run.
- name: Cache npm downloads
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: admin/package-lock.json
path: ~/.npm
key: npm-${{ runner.os }}-${{ hashFiles('admin/package-lock.json') }}
# The bundle is a release input whose hash is pinned before this run
# exists, so a runner on a different node or npm must fail here rather