4 Commits

Author SHA1 Message Date
Oleks b797aefb28 refactor(ci): retrofit onto parity-lib mkAtticClosurePublish (#200)
ci/woodpecker/push/amd64 Pipeline failed
ci/woodpecker/push/arm64 Pipeline was successful
Replace the bespoke ci/publish.py attic-push logic with parity-lib's
mkAtticClosurePublish builder (attic-closure archetype, cluster#104,
emmett#44). Adds the parity input (locked at d265a79) and wires the
per-arch package closures through builders.mkAtticClosurePublish, with
the endpoint (nix-cache-upload.oleks.space) and passEntry
(infra/attic/ci_token) overridden so the attic push is byte-for-byte the
pre-parity behaviour.

.woodpecker/{amd64,arm64}.yaml thinned to PUBLISH=1 nix run .#publish /
.#publish-aarch64-linux so CI and a local run share one audited impl.
Dead ci/publish.py + ci/build.py removed.

pipeline-doctor: 9 passed / 0 failed / 0 warned.
2026-06-03 10:58:06 +03:00
Oleks e8050f9dfd ci: echo build arch (uname -m) as first line of every step for visibility
ci/woodpecker/push/arm64 Pipeline failed
ci/woodpecker/push/amd64 Pipeline failed
2026-06-02 13:42:35 +03:00
Oleks 9d80f47625 ci: local-pipeline parity via stage/publish flake apps (cluster#192, emmett#44)
attic-closure archetype: no parity-lib builder exists for attic pushes, so
wrap the existing per-arch package build in ci/publish.py (woodpecker-peek
pattern) and expose `nix run .#{stage,publish}-amd64` + `.#publish`.

Two-halves rule: STAGE nix-builds every package in the arch list into the
local store (emmett-buildable); PUBLISH additionally attic-pushes each
closure. Local runs DRY-RUN unless --push/PUBLISH=1; CI sets PUBLISH=1.

The .woodpecker/{amd64,arm64}.yaml now call the same ci/publish.py so CI
and local runs can't drift. arm64 stays node-bound (no emmett cross path),
so it has no local-parity app. ci/build.py becomes a forwarding shim.
2026-06-02 09:22:39 +03:00
Oleks bbf81d6ac5 ci: split workflow per arch to fix cross-arch PVC scheduling
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
A single-workflow with steps spanning amd64 and arm64 shares one
PVC. The clone step binds the PV to whichever arch ran first, and
the other arch's pod is then permanently Unschedulable (node
affinity mismatch on the PV). Splitting into separate workflow
files gives each arch its own clone, its own PVC, and its own node
binding.
2026-05-12 21:27:34 +03:00