Operations
Matrix builds
Build the cross-product of compiler versions and target platforms with isolated caches.
Run a matrix
phelix build myapp --matrix --go-versions 1.21,1.22,1.23 --platforms linux/amd64,linux/arm64
phelix dockerize myapp --matrix --go-versions 1.22,1.23 --platforms linux/amd64,linux/arm64 --multi-arch-tag --pushKnown targets
| Dimension | Supported |
|---|---|
| Go | 1.20–1.26 |
| Rust | 1.75–1.97 |
| Linux | amd64, arm64, arm/v7, arm/v6 |
| macOS | amd64, arm64 |
| Windows | amd64 |
Build strategy
Go uses GOOS/GOARCH with CGO disabled. Rust uses cross in Docker for correct linkers and C libraries. Multi-version builds isolate each toolchain in its own container (golang:1.21, golang:1.22, …) with clean cache isolation.
CGO-dependent Go projects fail with a clear error that suggests Docker-based builds or a C cross-compiler.
Output naming
| Artifact | Naming |
|---|---|
| Binary (matrix) | builds/matrix/go1.22-linux-amd64/binary |
| Docker per-combo tag | myapp:go1.22-linux-amd64 |
| Docker multi-arch tag | myapp:latest (manifest list via docker buildx) |
| JSON report | builds/matrix/report.json |
Reporting and failures
A worker pool runs combinations in parallel (default 3), each with its own cache directory — .phelix/cache/go/{combo-id}/ or target/{combo-id}/ — with a live progress display.
The build phase is fail-open: one failed combination does not stop the others. The push phase is fail-closed: if any combination failed, nothing is pushed unless --push-partial is supplied. A terminal summary plus a JSON report records status, duration, artifact path, and errors per combination.