ci: CI-resolve mempalace-toolkit to a pinned SHA
mempalace-toolkit is the only companion cloned in Dockerfile.base (all others live in Dockerfile.variant), so it bypassed the resolve-versions -> build-arg plumbing and its ref stayed a literal `main`. Because the base only rebuilds on a content hash of Dockerfile.base + rootfs/* + entrypoints, a toolkit-only fix would silently fail to land unless Dockerfile.base itself changed (as it incidentally did in v1.1.1). Changes: - resolve-versions: new mempalace_toolkit_ref output (gitea commits API, mirrors pi-toolkit resolution; jq '.[0].sha // "main"' fallback). - base-decide: needs resolve-versions; fold the resolved SHA into the base-tag hash so a moved toolkit forces a base rebuild automatically. - build-base: needs resolve-versions; pass --build-arg MEMPALACE_TOOLKIT_REF. - Dockerfile.base: switch clone from `git clone --branch` to a SHA-capable `git fetch <ref> + checkout FETCH_HEAD` (the --branch <SHA> footgun already fixed in Dockerfile.variant, run 374). base_tag now reflects a live gitea lookup; on API blip it falls back to `main`, triggering one extra rebuild, never a missed one. No new tag — lands on the next v* release or workflow_dispatch.
This commit is contained in:
@@ -11,6 +11,34 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
|
||||
|
||||
---
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Changed
|
||||
|
||||
- **`mempalace-toolkit` is now CI-resolved to a commit SHA**, closing a
|
||||
silent-staleness footgun. It is the only companion cloned in
|
||||
`Dockerfile.base` (all others are cloned in `Dockerfile.variant`), so it
|
||||
was never run through the `resolve-versions` → build-arg plumbing. Its
|
||||
ref stayed a literal `main`, and because the base only rebuilds when the
|
||||
hash of `Dockerfile.base + rootfs/* + entrypoints` changes, a
|
||||
toolkit-only fix would *not* land in the image unless `Dockerfile.base`
|
||||
itself happened to change (as it did, incidentally, in v1.1.1).
|
||||
|
||||
Now `resolve-versions` resolves `mempalace-toolkit` `main` HEAD to a SHA
|
||||
(new `mempalace_toolkit_ref` output), `base-decide` folds that SHA into
|
||||
the base-tag hash (so a moved toolkit forces a base rebuild), and
|
||||
`build-base` passes it as `--build-arg MEMPALACE_TOOLKIT_REF`. The base
|
||||
clone switched from `git clone --branch` to a SHA-capable
|
||||
`git fetch <ref> + checkout FETCH_HEAD` (the `--branch <40-char-SHA>`
|
||||
footgun previously fixed in `Dockerfile.variant`, run 374).
|
||||
|
||||
Note: `base-decide` now depends on `resolve-versions`, so the base tag
|
||||
reflects a live gitea API lookup. On an API blip it falls back to `main`
|
||||
— which hashes differently than a SHA and triggers one *extra* rebuild,
|
||||
never a *missed* one (fail-toward-rebuild).
|
||||
|
||||
---
|
||||
|
||||
## v1.1.1 — 2026-06-13
|
||||
|
||||
Patch release: pi `0.79.1` → `0.79.3` (auto-resolved at build) plus the
|
||||
|
||||
Reference in New Issue
Block a user