Repository navigation
improve(ci): cache release channel builds - #69
Merged
Merged
Conversation
vincentkoc
had a problem deploying
to
qa-live-shared
September 4, 2026 11:08 — with
GitHub Actions
Error
vincentkoc
temporarily deployed
to
qa-live-shared
September 4, 2026 11:18 — with
GitHub Actions
Inactive
vincentkoc
temporarily deployed
to
qa-live-shared
September 4, 2026 11:36 — with
GitHub Actions
Inactive
vincentkoc
marked this pull request as ready for review
September 4, 2026 11:55
Member
Author
|
@clawsweeper review |
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Problem This Solves
Release Channel RTT matrix jobs rebuilt both the historical OpenClaw release and the current QA harness from scratch for every channel/version entry, even though both builds already maintain validated native build caches. A cold job spent 4m59s building the release and 4m34s building the QA harness, or 9m33s before sampling, and the workflow did not persist those caches for later exact-source jobs.
Exact-head review then found a cache-safety blocker: the channel package was linked into ignored
node_modulesbefore both builds. That link could affect build output without participating in the cache identity, allowing an immutable v1 entry to contain channel-dependent output under a channel-independent key.Why This Change Was Made
The workflow now restores and saves only each checkout's native
.artifacts/build-all-cachearound the existing fullpnpm buildcommands.Cache identity is exact and stable:
There are no restore prefixes or cross-revision fallbacks. Cache saves run only after a primary-key miss and use the restore action's
cache-primary-key, so concurrent cold jobs race safely on one immutable entry instead of uploading duplicate warm caches.Both full builds and both cache saves now complete before the channel package link is created. The link step runs immediately before RTT sampling, so cached build output cannot capture channel-dependent
node_modulesstate. The cache namespace is bumped fromopenclaw-release-channel-rtt-build-v1to...-v2; immutable v1 entries cannot hit and suppress repaired cache saves.Manual benchmark dispatches can set
publish_results=false. Measurement and evidence artifacts still run normally, while the privileged report job is skipped so benchmark runs cannot update RTT data or README state.Dispatches can also set
prepare_only=trueto execute the existing checkout, install, compatibility patch, verification, full-build, and native cache-save path without linking a channel package or starting live RTT work. Prepare-only matrix jobs use a run-scoped concurrency group so they do not queue behind normal channel measurements, whilemax-parallel: 1still lets the first matrix entry seed later exact-source entries in the same run. Normal runs retain the exactchannel-rtt-measure-<channel>grouping and theqa-live-sharedenvironment.User Impact
Scheduled and normal manual Release Channel RTT runs retain their existing publication, credential, retry, channel, artifact, and full-build behavior. Exact-source matrix jobs can reuse validated build work instead of repeatedly paying the cold build cost.
Permissions remain split: measurement has
actions: readandcontents: read; only the report job hascontents: write, and that job is skipped for non-publishing benchmarks. The cache excludesnode_modules, QA evidence, workspace artifacts, RTT imports, and repository data.Prepare-only mode skips channel linking, sampling, import preparation/upload, diagnostic upload, and the report job even though
publish_resultsdefaults to true. Both secret expressions remain confined to the skipped sample step, so prepare-only jobs do not materialize live credential environment variables.Evidence
95543e2818852edc8f8bd6e049f1e993026f77ff.tsdown-ai,tsdown-packages, and startup metadata (write-cli-startup-metadata). Thetsdown-unifiedand plugin-SDK declaration partitions rejected signature mismatches and rebuilt safely.33861186234completed and remains the historical cold evidence. Current-task obsolete runs33864851729,33865306984, and33866434154were cancelled because they cannot provide exact-head evidence.+99/-27; discounting the pure 24-line link-step move, functional production/tooling delta is+75/-3. Tests:+181/-4.Follow-Up
Named follow-up: investigate OpenClaw declaration signature instability in the
tsdown-unifiedand plugin-SDK partitions, then bump the RTT cache namespace when fixed so repaired native cache records repopulate cleanly.If build time remains a material share after cache reuse, split release and QA builds into independent artifact-producing jobs, then let credential-bound channel measurement consume those immutable build artifacts. That larger workflow change should be evaluated separately because it changes job topology, artifact transfer, and failure ownership.