Repository navigation
ci(release): move Linux/macOS build lanes to self-hosted runners (#348) - #45
Conversation
GitHub-hosted runners cannot fetch from the Gitea cargo registry: off-tailnet cargo access is Bearer-only (Gitea #341) and cargo omits Bearer on .crate downloads whenever the registry advertises auth-required:false, which Gitea computes from org visibility (terraphim is public). The 2026-09-25 Caddy narrowing therefore only works when cargo attaches credentials to every request. Self-hosted runners on the Tailnet reach git.terraphim.cloud via the box /etc/hosts mapping (100.106.66.7), so Caddy treats them as on-network and no registry auth dance is needed at all. - Linux lanes (gnu + both musl cross targets) -> release-linux label on the bigbox runner (terraphim-clients-runner-1) - macOS lanes (x86_64 cross-compile + aarch64 native) -> release-macos label on the Apple Silicon runner (terraphim-clients-macos-1) - Windows lane removed: restore it once the private terraphim crates are published to crates.io so GitHub-hosted runners can fetch them - sign-and-notarize and create-universal stay on GitHub-hosted macos-15: they never touch the cargo registry and need sudo for Rosetta provisioning - Remove the temporary cargo-auth debug echo block - Contract tests updated to the five-lane self-hosted matrix; release version pin corrected to 1.21.17 (missed in #40); PKGVER comment documents the intentional mid-release PKGBUILD lag Refs #348
P0: seal-release-stage still consumed the deleted Windows lane (artifact download, zip assembly, = 20 asset assertions) which would fail every release at the final gate. Removed the download step and zip block, dropped dead .exe extension branches in build-binaries, and set the asset counts to 17 (6 agent + 5 cli + 6 grep tar.gz). P1: the x86_64-apple-darwin lane verifies by executing the cross-compiled binary under Rosetta, but Rosetta was only provisioned in sign-and-notarize-macos which runs on a different machine. Added a guarded 'Prove Rosetta' step to the macOS build lane. P2: documented host preconditions (sudo, docker, qemu-user-static, readelf, rustup, Rosetta) next to the matrix comment; contract tests now pin the absence of the Windows lane so it cannot be half-removed again. Review: pi-rust (kimi-for-coding/k2p5), posted on PR #45. Refs #348
Review: PR 45 — move release build lanes to self-hosted runnersBranch: Verdict: request changesThe matrix change itself is correct, but the Windows lane was removed at the Findings1. Blocking —
|
Review findings addressed (commit e8edb47)P0 (blocking): P1: guarded Rosetta provisioning step added to the x86_64-apple-darwin build lane (no-op when Rosetta present; runner has passwordless sudo). P2: host preconditions documented next to the matrix comment (sudo, docker, qemu-user-static, readelf, rustup, Rosetta); contract tests now pin All 35 contract tests pass, actionlint clean. Note on the review's follow-up remark: Review by pi-rust (kimi-for-coding/k2p5) — confidence in findings: matrix/labels/needs-if checks all passed. |
Summary
GitHub-hosted runners cannot fetch from the Gitea cargo registry: off-tailnet cargo access is Bearer-only (Gitea #341) and cargo omits Bearer on
.cratedownloads whenever the registry advertisesauth-required:false(Gitea computes it from org visibility;terraphimis public).Self-hosted runners on the Tailnet reach
git.terraphim.cloudvia the box/etc/hostsmapping, so Caddy treats them as on-network — no registry auth dance needed.Changes:
release-linuxlabel (bigbox runnerterraphim-clients-runner-1, registered in this PR)release-macoslabel (Apple Silicon runnerterraphim-clients-macos-1, registered in this PR)Test plan
cargo fetchofterraphim_typessucceeds from bigbox with empty tokenRefs #348