rosetta run warming to populate the caches, then /etc/aspect/workflows/bin/warming_archive to upload them to the warming bucket. aspect ci warming replaces both with a single task: it cleans the runner’s prior Bazel state, runs bazel build --nobuild against the given targets to populate the repository, output, and Bazel caches, and — on an Aspect Workflows runner — uploads the populated caches to the warming bucket itself.
Warming runs on a schedule (typically daily) to pre-populate an Aspect Workflows runner group’s shared caches, so the first real CI job of the day starts warm instead of building everything from cold.
aspect ci warming requires Aspect CLI v2026.26.44 or newer.What changed
| Area | Rosetta | aspect ci warming |
|---|---|---|
| Invocation | rosetta run warming then /etc/aspect/workflows/bin/warming_archive | aspect ci warming -- //... (one step; runs the archiver itself on a runner) |
| Targets | Whole repo (from the .aspect/workflows/config.yaml warming task) | Positional patterns, default //... (e.g. aspect ci warming -- //services/...) |
| Cache populate | rosetta run warming | bazel build --nobuild against the targets |
| Archive upload | Separate warming_archive invocation | Built in — invoked automatically on a Workflows runner |
| Off a Workflows runner | n/a | The cache-populate step still runs; the archive step is skipped with a warning |
| Workflows config | Needs .aspect/workflows/config.yaml with a warming task | None |
Configuration
aspect ci warming takes positional target patterns plus a few flags:
- Targets (positional, default
//...) — the Bazel target patterns to warm. --bazel-flag=<flag>(repeatable) — extra flags forwarded to the underlyingbazel build(e.g.--bazel-flag=--config=ci).--bazel-startup-flag=<flag>(repeatable) — extra Bazel startup flags.
Examples
Run warming on a schedule against your main branch. The job replaces the old two-command warming step with a singleaspect ci warming.
Before — .aspect/workflows/config.yaml plus a warming job running rosetta run warming + warming_archive.
After — a scheduled CI job:
The warming task itself doesn’t need the
setup-aspect plugin: it always runs on an Aspect Workflows CI runner where aspect is already on the PATH, and it makes no vanilla bazel calls. The GitHub Actions example still uses the action because it provides the auth aspect needs to post its status check; on other providers, supply ASPECT_API_TOKEN instead (see the comments in the examples).schedule: cron, a Buildkite scheduled pipeline, a GitLab pipeline schedule, or a CircleCI scheduled pipeline — as shown in the examples above. Point it at your main branch and run it as often as your cache churn warrants (daily is typical).
