CI Infrastructure
This repository’s CI pipeline builds and tests the Z3 stack components
(zebrad, zainod, and zallet) together as an integrated system.
What CI does
On every pull request and push to main, CI:
- Builds the
zebrad,zainod, andzalletbinaries from their latest released versions (or from a specific commit when triggered by a cross-repo dispatch). - Runs the RPC test suite against the built binaries on required platforms.
- Reports results back to the triggering repository when invoked via cross-repo dispatch.
Platform matrix
| Platform | Required | Tests |
|---|---|---|
| Ubuntu 22.04 (x86_64) | Yes | Build + RPC tests |
| Ubuntu 24.04 (x86_64) | No | Build only |
| Windows (64-bit MinGW) | No | Build only |
| ARM64 Linux | No | Build only |
Required platforms must pass for CI to succeed. RPC tests are only run on required platforms to manage CI costs. When CI is triggered via cross-repo dispatch, callers may specify which platforms to run; all explicitly requested platforms are treated as required.
Build caching
The tested projects move much less often than this repository, so most CI runs
would otherwise rebuild an identical upstream commit. Each build resolves its
upstream ref to a concrete commit SHA and restores a cache of the built binary
keyed by that SHA (plus a hash of the build scripts). On a cache hit the source
checkout and the cargo build are skipped entirely, and only the cached binary
is uploaded as the artifact; the binary is rebuilt only when the upstream commit
(or the build logic) actually changes. A best-effort post-build step prunes each
per-binary, per-platform cache to its 5 most recent versions.
Cross-repository integration
External repositories can trigger integration tests from their PRs and receive results back as status checks. See Cross-Repository CI for the mechanism and setup instructions.