#36082 ci: add Guix builds to CI
https://github.com/bitcoin/bitcoin/pull/36082 · · +210/-2 in 3 files, 3 commits · labels: Tests
Goal
- Catch Guix build breakages and codesigning manifest errors continuously in CI
- Prevent release-blocking surprises that maintainers currently discover only late in the cycle
Adds a standalone GitHub Actions workflow to run Guix builds for arm64-apple-darwin, x86_64-linux-gnu, and x86_64-w64-mingw32. Exports Guix time-machine metadata from the Guix prelude for cache keys and external substitute builders, installs Guix with custom substitute server support, and adds environment testing for codesigning manifests.
Problem: Guix build breakages, missing imports, and codesign manifest errors are currently only discovered during manual Guix builds or late in the release cycle when maintainers attempt to produce release binaries.
Category: Build and CI (#6 of 55)
P2 · test coverage
- P2 because continuous verification of Guix environments protects against release-time regressions
- Missing imports and broken signing dependencies are caught before release signing begins
Automating Guix builds in CI provides strong protection against release-time regressions. As the author notes in commit a340718c36, 'missing imports and broken signing dependencies can go unnoticed until signing', making continuous verification of Guix manifests and environments strategically valuable for release integrity.
Membership: Modifies Guix helper scripts and adds a new GitHub Actions workflow for Guix builds
Factors: security/stability 2, bug 0, performance 1, user value 0, leverage 2
Reviewability: Ready
- Ready for review after earlier commits were restructured and CI passed
The PR has passed CI and the author marked it ready for review after restructuring earlier commits.
Author status: active, requested feedback on substitute server infrastructure
Open concerns:
- Whether the project is comfortable relying on the author's two third-party Guix substitute servers without upstream fallback servers enabled
Resolved concerns:
Agreement: Positive
- Concept approval without stated reasons (fanquake, sedited)
- Concern over duplicate caching was resolved by dropping the overlapping commit (hebasto)
- Open question remains on relying on third-party substitute servers
Positive: Concept ACKs from fanquake and sedited with an open design question regarding substitute server operations.
Multiple maintainers provided Concept ACKs and the only earlier technical concern was resolved by the author dropping the overlapping commit.
- fanquake gave Concept ACK on 2026-09-15
- sedited gave Concept ACK on 2026-09-15
- hebasto confirmed approach direction on 2026-08-28
Objections:
| Reviewer | Kind | Harm | Status | Blocking | Author replied | Quote |
|---|---|---|---|---|---|---|
| hebasto | approach | initial commit duplicated #35929 while failing to resolve duplicate non-GUI builds per host | resolved | no | yes | 2026-08-28: 'Compared to #35929, it manages to fix the first subissue... Unfortunately, it fails to resolve the second one' Settled: 2026-08-28: author agreed ('Thanks hebasto, that sounds reasonable to me') and dropped the commit in a rebase |
Support:
- fanquake: Concept ACK [not substantive]
- sedited: Concept ACK [not substantive]
Participants: hebasto (objection), fanquake (support), sedited (support)
State derived from the lists: support without stated reasons, no open objection (fanquake, sedited)
Review verdicts (DrahtBot): 0
Files
7 lines under test/bench/ci.
- .github/workflows/guix.yml +171/-0
- .github/install-guix.sh +34/-0
- contrib/guix/libexec/prelude.bash +5/-2
Card
Adds a standalone CI workflow to execute Guix builds for Linux, Windows, and macOS, alongside environment checks for codesigning manifests. This detects broken Guix definitions and packaging regressions continuously rather than delaying discovery to release time. Reviewers have given Concept ACKs, and the PR is ready for feedback on its operational reliance on dedicated Guix substitute servers.