WIP: Image push reads the wrong filename: 27-minute build succeeds, push fails on a hardcoded path #1
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/wi-019f99d8-image-push-reads-the-wrong-filename-27-m"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anima work item
019f99d8-ffc9-7bf2-a6c0-3c2c0b54a4dd..forgejo/workflows/images.ymlbuilds the runner image successfully and then fails to push it, because the build and push steps disagree about the output filename.From the last run (2026-07-13, request in
solstice_prod):forger names the artifact after the target —
solstice-ubuntu-22.04.qcow2. The push step is hardcoded totarget/forger-output/qcow2.qcow2. The workflow's ownls -lahprints the correct filename immediately before the step that looks for the wrong one.The build takes 27 minutes and completes. Every one of those runs is thrown away at the last step.
Consequences
solstice-rustwas never pushed at all, which is why the orchestrator image map still consumes it viafile:///var/lib/solstice/images/solstice-rust.qcow2with the comment "registry push pending". The reason was never the memory ceiling that comment implies — it is this.solstice-rust.qcow2is stuck at its 2026-06-03 hand-build and does not include commit 6651cfb's rustfmt component fix, forcing every consumer to guard tool availability at job time.Fix
IMAGE_NAMEis already an env var in the workflow. Use it:Do not merely hardcode the other name — deriving it from
IMAGE_NAMEis also the change that makes matrixing over multiple images straightforward, which is the next work item in this plan.Add an assertion between build and push that the artifact exists, so a future naming change fails in one second with a clear message instead of after 27 minutes of build time.
Acceptance criteria
forger pushfinds the artifact the build produced.solstice-ubuntu-22.04:latestis republished and the digest changes.Related
019f998c-af60-7832-907d-3d1422a26acd— make solstice-rust pipeline-built and registry-published. Blocked on this; the pipeline it would reuse cannot currently push anything.019f998c-8698-79d2-9183-e7ec5f8c3746— streaming push to bound memory. Still worth doing, but it is not what is blocking publication today.e016e513ebto715e417574715e417574toca7df59eb6The runner-integration build.rs imports google/protobuf/{struct,timestamp}.proto and probes /usr/include/google/protobuf/timestamp.proto to add /usr/include as an include dir for tonic_prost_build. On Debian/Ubuntu, protobuf-compiler ships only the protoc binary — the well-known .proto files live in the separate libprotobuf-dev package. Without it, the build script panics with "google/protobuf/struct.proto: File not found" and cargo exits 101 with "warning: build failed, waiting for other jobs to finish..." — the exact CI failure blocking the image-push fix. Add libprotobuf-dev (apt) / protobuf-devel (dnf/yum/zypper) to setup-linux.sh. apk (Alpine) and pacman (Arch) already bundle the well-known protos with their protoc package, so they are left as-is. Also add a sanity check in main() that the well-known protos exist after the package install, failing loudly in seconds with the remediation package named instead of after ~27 min of build-script panic.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.