perf(ci): cut warm CI time via download-skipping, splat reuse, PR gating

Four levers on top of the green pipeline:
- kata jobs pass --remote_download_toplevel, so fully cache-hit builds
  stay metadata-only instead of pulling every intermediate artifact from
  bazel-remote (the bulk of the previous 6-minute TS-only main runs).
- the xwin MSVC splat caches its ~1GiB CDN payload on the runner-cache
  PVC (OMP_XWIN_CACHE_DIR), instead of re-downloading per ephemeral pod.
- main-push rust jobs export their bazel disk cache to the GitHub cache
  (once per lockfile change, shared linux scope). GitHub only shares
  default-branch caches across PRs, and main runs on kata where
  actions/cache never saved — so every fresh PR was building cold.
- TS-only pull requests skip Rust validation entirely (gh pr diff path
  gate); their test jobs restore addons from the main-exported cache.

Export runs disable top-level-only downloading: remote hits would
otherwise export action entries whose blobs were never materialized.
This commit is contained in:
can1357
2026-07-27 14:31:24 +02:00
parent ae01a76136
commit a7abeff1b7
4 changed files with 114 additions and 23 deletions
+8 -1
View File
@@ -412,7 +412,14 @@ bazel build \
On omp-kata the credentials come from the injected pod env
(`bazel-remote-ci` secret) and `.github/actions/bazel-cache` composes the rc
fragment. GitHub-hosted jobs get the disk-cache branch of the same action —
no remote endpoint, no credentials, no infrastructure knowledge.
no remote endpoint, no credentials, no infrastructure knowledge. The bridge
between the two worlds is the **disk-cache export**: main-push rust jobs
write a bazel disk cache alongside the remote cache and save it to the
GitHub Actions cache (once per lockfile change, `linux` scope). GitHub only
shares caches from the default branch across pull requests, so this export
is what keeps PR builds warm; kata jobs otherwise skip artifact downloads
entirely (`--remote_download_toplevel`), and the xwin MSVC splat persists on
the runner-cache PVC (`OMP_XWIN_CACHE_DIR`).
**(b) Cargo registry cache** - the scale-set pod template mounts only the
immutable download cache and sparse index at