ci: move the release-path actions off the Node 20 runtime - #344
ci: move the release-path actions off the Node 20 runtime#344FrameAutomata wants to merge 3 commits into
Conversation
The six actions #326 left after the actions/* sweep, all third-party and all on release workflows: docker/build-push-action v5 -> v7 (release-traceway, 5 uses) docker/setup-qemu-action v3 -> v4 (release-traceway) docker/setup-buildx-action v3 -> v4 (release-traceway) docker/login-action v3 -> v4 (release-traceway) cloudflare/wrangler-action v3 -> v4 (release-website, -docs, -helm) azure/setup-helm v4 -> v5 (release-helm) Every pin in .github/workflows is node24 or composite after this. No PR label exercises any of these, so this wants a workflow_dispatch dry run before merging -- see the PR description for which and in what order. wrangler-action v4 changed its default Wrangler CLI from 3 to 4. Neither website/package.json nor docs/package.json depends on wrangler, so the action's default is what actually deploys tracewayapp.com and the docs: taking v4 unpinned would carry a CLI major bump into a production deploy inside a runtime change. `wranglerVersion: "3"` holds the CLI where it is so this change moves one thing. Wrangler 4 is worth doing, deliberately and on its own. The other five are inert for how they are called here: build-push-action v6 turned on build summaries (default on, additive) and v7 dropped the DOCKER_BUILD_NO_SUMMARY and DOCKER_BUILD_EXPORT_RETENTION_DAYS envs -- neither is set anywhere in the repo. The inputs in use (context, file, push, tags, platforms, cache-from, cache-to) are unchanged. setup-buildx-action v4 removed deprecated inputs and outputs. It is invoked with no inputs and its outputs are not referenced -- the step has no id. login-action v4, setup-qemu-action v4 and setup-helm v5 are Node 24 plus ESM only. login-action's registry/username/password are unchanged, and the other two take no inputs. Refs #326. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…in an owner build-push-action v6+ generates a build summary and uploads a build record artifact per build. release-traceway.yml runs five of them, so the bump silently added five artifacts per release inheriting the repo-wide retention. The summary itself earns its keep -- all five builds write cache-to: type=gha,mode=max and it is the only place per-build cache-hit ratios are visible without re-running a release -- so this caps the record retention at a week rather than disabling the feature. The three wranglerVersion comments deferred to release-website.yml for their rationale, which is a coupling nothing enforces: each of these files is normally read alone in a diff, and rewording or retiring the website comment would silently orphan two pointers. Each site now states its own reason. The pin's exit condition was also prose and nothing else, on a production deploy path, in a repo where unowned version state drifting until it becomes an annotation is the whole subject of #326. Filed as #331 and referenced from all three sites. #330 covers the absent drift detection that let #326 happen twice in one day. Refs #326. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
"3" is a range wrangler-action re-resolves to the newest 3.x on every deploy, so as a pin it only bounds the major. #347 puts the CLI version in website/ and docs/ package-lock.json and pins this job -- the one with no npm project -- to an exact 3.114.17. Adopting that block verbatim here, so the two PRs make byte-identical edits to this file and merge in either order without a conflict. The only line that differs is the one this PR exists for, @V3 -> @v4. The docs and website wranglerVersion pins stay as they are: they are the safety net if this lands before #347, and an installed 3.114.17 satisfies "3" once it does, so the lockfile still decides. They can be dropped in a follow-up once both are in. Refs #326, #331. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Aligned the Two things that changed here:
The The Generated by Claude Code |
Part 2 of #326, now targeting
maindirectly (was stacked on #328; per review, PRs should be independently mergeable). #328 does the 63actions/*pins; this does the six third-party ones. The two touch four files in common but never the same lines, so they merge in either order.These are all third-party, all on release workflows. After this and #328, every pin in
.github/workflowsisnode24or composite.docker/build-push-actionrelease-traceway(5 uses)docker/setup-qemu-actionrelease-tracewaydocker/setup-buildx-actionrelease-tracewaydocker/login-actionrelease-tracewaycloudflare/wrangler-actionrelease-website,-docs,-helmazure/setup-helmrelease-helmThe earlier version of this description told reviewers to validate with a
workflow_dispatchrun, "cheapest first:release-helm.yml, it only publishes a chart index." That advice was wrong and I am retracting it. Dispatching these workflows deploys for real:release-docs.yml/release-website.ymlrunwrangler-actionwithcommand: deployandsecrets.CLOUDFLARE_API_TOKEN— dispatching either publishes to production Cloudflare from whatever ref you pick.release-helm.ymlrunspages deploy deploy --project-name traceway-charts, overwriting the live chart index. Lower stakes than the marketing site, but a broken index breakshelm repo updatefor every existing install.release-traceway.ymlpushes real images.So this is validated by reading release notes against how the actions are actually called, below — not by running them. The first real exercise is the next release, which is why the one behaviour-changing default is pinned rather than taken.
wrangler-actionv4 changes the Wrangler CLI major — pinned herev4's headline change is that its default Wrangler CLI moves from 3 to 4. Neither
website/package.jsonnordocs/package.jsondepends onwrangler, so there is no project-pinned CLI for the action to pick up — its default is literally what deploystracewayapp.comand the docs.Taking v4 unpinned would smuggle a CLI major bump into a change whose entire purpose is a runtime bump, on a production deploy path with no pre-merge test. So all three call sites pin:
Same CLI as today, new runtime. Wrangler 4 is tracked separately as #331, referenced from all three sites so the deferral survives #326 closing. The route to validating that one is to make
wranglera devDependency ofwebsite/anddocs/, which moves the CLI into the lockfile wherenpm ciexercises it under thecilabel.Why the other five are inert here
build-push-actionv6 turned on build summaries (default on, additive — a summary panel plus an exported build record per build). v7 removed the deprecatedDOCKER_BUILD_NO_SUMMARYandDOCKER_BUILD_EXPORT_RETENTION_DAYSenvs; neither appears anywhere in the repo. Every input in use —context,file,push,tags,platforms,cache-from,cache-to— is unchanged.setup-buildx-actionv4 removed deprecated inputs and outputs (#464). It's invoked with no inputs, and its outputs can't be referenced — the step has noid.login-actionv4,setup-qemu-actionv4 andsetup-helmv5 are Node 24 + ESM only.login-action'sregistry/username/passwordare unchanged; the other two take no inputs at all.All runners are GitHub-hosted (
ubuntu-latest/ubuntu-24.04), so the ≥ 2.327.1 runner requirement is already met.Two things the bump changed that the version numbers don't show
The build summary is not free, and the bump turned it on silently.
build-push-actionv6+ generates a summary and uploads a build-record artifact per build.release-traceway.ymlruns five builds, so this bump quietly adds five artifacts per release, inheriting the repo-wide retention.Kept rather than disabled — all five builds write
cache-to: type=gha,mode=max, and the summary panel is the only place per-build cache-hit ratios and step timings show up without re-running a 30-minute release. Bounded instead withDOCKER_BUILD_RECORD_RETENTION_DAYS: 7at the job level: a week is long enough to debug the release that produced them. (That is the v7 spelling; v7 removed the olderDOCKER_BUILD_EXPORT_RETENTION_DAYSname.)The
wranglerVersioncomments no longer defer across files. Two of the three said "See release-website.yml" for their rationale, which is a coupling nothing enforces — each of these files is normally read alone in a diff, and rewording or retiring the website comment would silently orphan two pointers. Each site now states its own reason and points at #331.Refs #326.
🤖 Generated with Claude Code