Operations

Matrix builds

Build the cross-product of compiler versions and target platforms with isolated caches.

Run a matrix

Terminal
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 --push

Known targets

DimensionSupported
Go1.20–1.26
Rust1.75–1.97
Linuxamd64, arm64, arm/v7, arm/v6
macOSamd64, arm64
Windowsamd64

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

ArtifactNaming
Binary (matrix)builds/matrix/go1.22-linux-amd64/binary
Docker per-combo tagmyapp:go1.22-linux-amd64
Docker multi-arch tagmyapp:latest (manifest list via docker buildx)
JSON reportbuilds/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.