Skip to content

Commit 3c15c04

Browse files
committed
ci(build): fix push failure by switching to --deps run
Using --deps all tries to push build-time-only dependencies (like bootstrap seeds) of already-cached elements. Since these seeds are never pulled or cached locally during a warm build, the push fails with 'not cached' error. Switching to --deps run only pushes runtime dependencies of the assembled OCI image, which are guaranteed to be present and cached locally. Assisted-by: Gemini 3.5 Flash via GitHub Copilot
1 parent 0534d5d commit 3c15c04

2 files changed

Lines changed: 7 additions & 10 deletions

File tree

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,13 @@ jobs:
187187
# Push all locally-built artifacts to remote CAS so publish.yml can export
188188
# and the next scheduled build starts warm. Uses buildstream-push.conf
189189
# (push: true, no storage-service) so bst artifact push can write without
190-
# a sustained gRPC stream during the build phase. --deps all ensures every
191-
# element rebuilt locally during a cold start is cached for future builds.
190+
# a sustained gRPC stream during the build phase. --deps run ensures every
191+
# runtime element rebuilt locally or pulled during the build is cached.
192192
- name: Push OCI artifact to remote CAS
193193
env:
194194
BST_FLAGS: -o x86_64_v3 true --no-interactive --config /src/buildstream-push.conf
195195
run: |
196-
just bst artifact push --deps all ${{ matrix.element }}
196+
just bst artifact push --deps run ${{ matrix.element }}
197197
198198
# ── Upload build logs ─────────────────────────────────────────────
199199
# Always upload, even on failure, so build failures can be diagnosed.

docs/skills/ci.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ build phase: remote execution on cache.projectbluefin.io:11002 (16c/32t, 128GB
146146
config: buildstream-ci.conf
147147
148148
push phase: runner local disk --> cache.projectbluefin.io:11002 (push: true, one-shot)
149-
bst artifact push --deps all <element>
149+
bst artifact push --deps run <element>
150150
config: buildstream-push.conf (artifacts push: true, no storage-service)
151151
(runs after build completes successfully)
152152
```
@@ -187,18 +187,15 @@ When `enable-push: false` (local-first mode):
187187
env:
188188
BST_FLAGS: -o x86_64_v3 true --no-interactive --config /src/buildstream-push.conf
189189
run: |
190-
just bst artifact push --deps all ${{ matrix.element }}
190+
just bst artifact push --deps run ${{ matrix.element }}
191191
```
192192
193193
`generate-bst-ci-config` writes TWO configs:
194194
- `buildstream-ci.conf` — used during the build phase: `push: false`, remote-execution enabled with **nested** `storage-service` (NOT top-level). casd stays in local disk mode.
195195
- `buildstream-push.conf` — used for the post-build push only: `push: true`, no `storage-service`, no `source-caches`. Only the artifacts server block — `bst artifact push` does not use source-caches.
196196

197-
`--deps all` pushes the entire locally-built artifact tree, not just the top-level OCI element.
198-
This is critical for cold starts: after a build that rebuilt many elements (e.g. after the cache
199-
went cold), `--deps none` would leave all intermediate artifacts un-pushed and the next build
200-
would be cold again. BST artifact push is idempotent — elements already in the remote CAS are
201-
skipped, so `--deps all` is safe and fast on a warm cache.
197+
`--deps run` pushes the entire locally-built and pulled runtime artifact tree, not just the top-level OCI element itself.
198+
This is critical for warm builds and cold starts alike: after a build, `--deps none` would leave all intermediate runtime artifacts un-pushed. We use `run` instead of `all` because `all` tries to push build-time-only dependencies (like bootstrap seeds) which are skipped on warm builds and not cached locally, causing the push step to fail with a "not cached" error.
202199

203200
**Why `push: false` in buildstream-ci.conf does NOT mean the push step is a noop:**
204201
They use different config files. The build phase uses `buildstream-ci.conf` (`push: false`) so

0 commit comments

Comments
 (0)