Build from Source
Barn 0.9.0 is an unreleased candidate. Use this page to build and check a checkout containing the rename. Installation commands for the eventual release are in the Quick Start.
Choose the source
Use a checkout containing the Barn changes. Once that source is pushed to the public repository, it can also be cloned with:
Do not assume a v0.9.0 tag exists before publication. Check the source identity
and working-tree changes first; go.mod must name github.com/pgsty/barn and
the command source must live in cmd/barn:
Build
The reviewed candidate tree pins Go 1.27.1 in go.mod and
packaging/toolchain.env. You also need Git, Make, Bash, and standard build
tools. QEMU and privileged network setup are needed to run VMs, not to compile
the CLI. From the selected checkout:
make build writes the matching barn and barn-hosts-helper binaries
under the Git-ignored bin/ directory. Do not mix the two binaries across
commits or releases. Development builds report dev by default; their commit
field identifies a clean source revision or says uncommitted for a dirty
checkout. The version string alone does not prove candidate behavior.
Keep the inventory in a separate lab directory. This does not isolate Barn
state: if you already have a deployment, inspect it before running up:
Complete checks
The complete checks also need Python 3, jq, a working C toolchain for race
tests, and the pinned quality tools. Install the versions used by the reviewed
candidate’s CI (check CONTRIBUTING.md and packaging/toolchain.env again when
using another revision):
Ensure the Go tools installation directory (GOBIN, or $(go env GOPATH)/bin
when unset) is in PATH. Before submitting a source change, run:
This gate includes module verification, shell syntax, maintenance ownership, unit and race tests, Vet, Staticcheck, four-target dead-code checks, errcheck, vulnerability checks, cross-builds, image-pipeline and installer tests, and dependency-license verification. CI separately checks formatting, whitespace, pinned tool versions, and GoReleaser configuration. Changes to packaging also need a verified packaging snapshot.
A passing source gate is not package publication or a native VM lifecycle
replay; make image-pipeline-native-test is a separate native image gate.
That gate requires the explicit image inputs documented at the top of
tests/image-pipeline-native-test.sh; it does not download a test image.
See Engineering for release tooling, dependency licenses, and validation boundaries.