Skip to content

Build caching for the deploy actions (sccache) — sub-plan 1: container digest-pin gate - #347

Draft
aram356 wants to merge 2 commits into
mainfrom
feature/build-app-cli-cache
Draft

Build caching for the deploy actions (sccache) — sub-plan 1: container digest-pin gate#347
aram356 wants to merge 2 commits into
mainfrom
feature/build-app-cli-cache

Conversation

@aram356

@aram356 aram356 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Starts the build-caching implementation for the deploy actions (design merged in #316). Tracks #346. This PR lands the feature in dependency order behind the pinned build container; the first increment is the container's fail-closed digest-pin validator.

Spec: docs/specs/edgezero-deploy-build-caching.md (v6.14 — sccache pivot). Plan: docs/superpowers/plans/2026-08-20-build-cache-container.md (sub-plan 1 of 4).

In this PR

  • .github/docker/build-app-cli/check-image-pin.sh — fail-closed validator that the build container's image.json is pinned by a sha256 manifest digest (not a mutable tag), since the whole feature keys platform-id on that digest. Rejects a tag, a short/missing digest, a missing repository, and malformed JSON (fail-closed).
  • .github/actions/deploy-core/tests/check-image-pin.test.sh — 6 colocated unit cases, all green; shellcheck -S warning clean.

Nothing here is wired into the runtime yet (no image.json, Dockerfile, or workflow), so this is CI-neutral and self-contained.

Next increments (same PR, dependency order)

  • Sub-plan 1 cont'd: the pinned Dockerfile (Rust 1.95.0 + wasm32-wasip1 + pinned sccache + Fastly CLI), the GHCR verify-by-digest → reviewable image.json PR publish workflow, and wiring the digest pin into the contract suite.
  • Then sub-plans 2–4 (cached build path → provenance → consumer integration), each keyed on this container's digest.

Notes

The design has been through extensive hardening review and continues to evolve; this PR intentionally starts from the most approach-stable, self-contained piece so review can proceed incrementally rather than against the whole feature at once.

First increment of the build-caching feature (sub-plan 1, Task 1) per
docs/specs/edgezero-deploy-build-caching.md (v6.14) and
docs/superpowers/plans/2026-08-20-build-cache-container.md. The pinned build
container's platform-id keys the whole feature on a sha256 manifest digest, so
check-image-pin.sh fails closed on a tag, missing digest, or malformed JSON.
Colocated unit test: 6 cases, all green; shellcheck clean.
@aram356 aram356 self-assigned this Aug 27, 2026
@aram356
aram356 marked this pull request as draft August 27, 2026 04:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant