Build ci-fleet-publish plugin image #14
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
A versioned Woodpecker plugin image (git.oleks.space/oleks/ci-fleet-publish) encapsulating: arch banner, resolv.conf/nix.conf shims, nixos-ci-entrypoint, attic watch-store lifecycle with clean shutdown, and a settings-driven run command. Built and pushed by ci-scripts' own CI, semver tagged, repos pin major (
:1).See Spec/Modern-CI-Target for requirements.
Closing. The
ci-fleet-publishplugin image is built, published, and pullable multi-arch.Code (main):
entrypoint.sh(63f17f1,6bd25f6,a04c5ae) — plugin entrypoint: arch banner, resolv.conf/nix.conf shims, attic login+watch-store lifecycle with explicit non-masking shutdown (no|| true), delegates tonixos-ci-entrypointfor thepublishflow.Dockerfile—FROM git.oleks.space/oleks/nix-ci:latest, bakes in the entrypoint.ci/local.sh— dev-parity build script (same script CI and a developer run)..woodpecker/build-amd64.yaml+build-arm64.yaml+manifest.yaml(6bd25f6) — hand-authored per-arch pipeline files (see deviation note below), tag-triggered, build+push+manifest.Verification:
git.oleks.space/oleks/ci-fleet-publish:v1.0.3(also:v1,:latest) is a proper 2-member manifest list (linux/amd64+linux/arm64, both plainmanifest.v2— not nested lists). Confirmed viadocker buildx imagetools inspectand a realdocker pull+docker runof the entrypoint (publish flow ran end-to-end against the real registry image).Deviations from the wiki spec (Spec/Fleet Publish Plugin System, updated to match):
buildx-multiarchflow value into explicitbuildx-build/buildx-manifest— one flow value can't distinguish "build my arch's tag" from "consolidate the manifest" (two different Woodpecker steps, same image).build-amd64.yaml/build-arm64.yaml) rather than generated via the shared generator'smatrixkind — a Woodpecker scheduler issue on this cluster left the matrix's${ARCH}-templatedlabels:unresolved at label-matching time for a stretch of debugging (later attributed mostly to unrelated infra: an unregistered webhook, fleet capacity, and the 2026-07-05 HeatWave/JuiceFS-CSI outage saga), and hardcoding sidesteps that risk entirely for this pipeline. Worth an audit of whether the shared generator's matrix kind is affected elsewhere.buildx buildas a manifest-list rather than a plain image manifest — brokedocker manifest createdownstream. Fixed with--provenance=false --sbom=false(commit63f17f1).Known follow-up (not blocking, noted for the migration wave):
ci/local.sh's major tag comes out asv1(from${VERSION%%.*}onv1.0.3), while the wiki's thin-pipeline example shows repos pinning:1(no v-prefix). Needs reconciling — either strip thevin the major-tag computation, or update the docs — during the #16/#17 migration wave.v1.0.3's build/manifest run also happened to be a live real-world test of the #9 resilience logic (an earlier v1.0.2 run correctly published an arm64-only manifest when amd64 was blocked by unrelated registry data loss, then re-ran clean once that was fixed).