You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`e2e`|`pull_request` when `elements/`, `files/`, `patches/`, `Justfile`, or `project.conf` changed | Smoke test in QEMU via projectbluefin/testsuite |
9
-
|`build`|`push: testing` (BST-affecting paths), `workflow_dispatch`, `schedule: daily 13:00 UTC` — skips on `pull_request`/`merge_group`|Four x86 variants concurrently through remote BuildBox execution; artifacts land in the remote CAS|
setup → publish-image → promote (:testing or :next)
19
-
└→ publish-sbom (parallel)
18
+
setup → publish-image → boot-check → promote (:testing or :next)
19
+
└──────────→ publish-sbom (parallel)
20
20
```
21
21
22
22
| Job | What |
23
23
|---|---|
24
24
|`setup`| Resolves SHA, trigger event, and branch |
25
-
|`publish-image`| Exports from CAS; rechunks; pushes `:$sha` and records the manifest digest from podman's digestfile; anonymous tag visibility is warning-only; signs + attests; uploads `digest-<variant>` artifact |
26
-
|`promote`| Downloads `digest-<variant>`, `skopeo copy` by digest → `:testing`, verifies the promoted tag matches; falls back to an authenticated `:$sha` inspect if the artifact is missing |
27
-
|`publish-sbom`| Generates SBOM; resolves the image digest from `digest-<variant>` (same fallback); attaches via oras; signs SBOM (parallel with promote) |
25
+
|`publish-image`| Exports from CAS; runs `chunka@v1` to rechunk; pushes `:$sha`; signs + attests |
26
+
|`boot-check`| Hard gate — image must boot before `:testing` is promoted |
27
+
|`promote`|`skopeo copy``:$sha` → `:testing` (only runs after boot-check passes) |
28
+
|`publish-sbom`| Generates SBOM; attaches via oras; signs SBOM (runs in parallel with promote) |
28
29
29
-
`promote` depends only on `publish-image`, not on SBOM — saves 10–15 min on the critical path.
30
-
31
-
**Digest contract:** a successful push plus podman's `--digestfile` digest is the receipt; no stage re-reads GHCR to rediscover what was pushed. The digest travels via per-variant `digest-<variant>` workflow artifacts, consumed everywhere through the shared `.github/actions/resolve-image-digest` action (artifact preferred, authenticated `:sha` inspect fallback). The few remaining registry reads (stable comparison, promote post-copy verify) are authenticated and digest-based. Anonymous tag reads are advisory only — GHCR's anonymous path is eventually consistent and lagged past a 6-minute poll twice on 2026-07-28/29. Artifacts are immutable per run: re-running a single `publish-image` job that already uploaded its artifact may fail the upload; re-run the whole workflow instead.
30
+
`promote` depends only on `publish-image` + `boot-check`, not on SBOM — saves 10–15 min on the critical path.
32
31
33
32
**Critical ordering:**`publish.yml` pulls the OCI artifact from CAS. The artifact is only in CAS if `build.yml` ran first for that SHA. Always dispatch `build.yml --ref testing` (or let push trigger it) before manually dispatching `publish.yml`.
push to testing (BST-affecting) or daily 13:00 UTC schedule
41
-
→ build.yml → publish.yml → :testing
40
+
→ build.yml → publish.yml → boot-check → :testing
42
41
→ execute-release.yml (workflow_run from publish on testing)
43
-
→ freshness check: digest from the publish run's digest-default artifact
44
-
(authenticated :$sha inspect as fallback) vs :stable digest
42
+
→ SHA freshness check (:testing SHA vs :stable SHA)
45
43
→ skip if equal (already up to date)
46
-
→ cosign verify
47
-
→ skopeo copy :$sha → :stable (reusable workflow)
44
+
→ cosign verify :testing
45
+
→ skopeo copy :testing → :stable
48
46
→ fast-forward main bookmark
49
47
→ GitHub Release created
50
48
```
@@ -53,7 +51,7 @@ push to testing (BST-affecting) or daily 13:00 UTC schedule
53
51
54
52
## Schedule
55
53
56
-
Build fires daily at 13:00 UTC, on BST-affecting pushes to `testing`, and through `workflow_dispatch`. The nightly-next dispatcher invokes the same workflow explicitly on `next`; PR and merge-queue events do not run it.
54
+
Build fires daily at 13:00 UTC (`schedule:` in `build.yml`), plus on every BST-affecting push to `testing` or `next`, `merge_group`, and `workflow_dispatch`.
Copy file name to clipboardExpand all lines: docs/skills/aarch64.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,3 +97,4 @@ The `build-aarch64` job was originally in `build.yml` with `if: false` (disabled
97
97
### Publish skips after docs-only commits (2026-06-22)
98
98
99
99
When all recent commits on `testing` are paths-ignored (docs/AGENTS.md only), no automatic build fires and `:testing` goes stale. Recovery: manual `workflow_dispatch` on `build.yml` targeting `testing`. After the build, `publish.yml` fires automatically, which then triggers `build-aarch64.yml`.
0 commit comments