dbuild
What is dbuild?#
It bridges the gap between modern OCI image standards and native FreeBSD jails. By handling the complexity of ocijail, networking, and jail annotations automatically, dbuild lets you focus on application logic rather than system administration.
dbuild is available as a native FreeBSD port: sysutils/py-dbuild (maintainer: dtxdf@FreeBSD.org).
The lifecycle#
dbuild manages the entire journey of a container image through three phases:
- Build — automatically detects
Containerfilevariants and builds native FreeBSD images with Podman. - Test — executes Quality Gates (CIT) to validate port bindings, health endpoints, and visual regressions.
- Publish — handles multi-arch tagging, registry authentication, and SBOM generation.
Key features#
- Multi-variant builds — automatically detects
ContainerfileandContainerfile.<variant>(e.g..pkg). - Architecture awareness — maps standard names (
x86_64,arm64) to FreeBSD conventions (amd64,aarch64). - Quality Gates — integrated testing that blocks registry pushes if validation fails.
- Documentation automation — renders
README.mdandContainerfilefromcompose.yamlmetadata. - CI first — designed to run identically on local machines, GitHub Actions, and Woodpecker CI.
Installation#
dbuild requires Python 3.11+ and Podman.
git clone https://github.com/daemonless/dbuild
cd dbuild
doas make installQuick start#
# Build and push all variants
dbuild build --push
# Initialize from a FreeBSD port
dbuild init --freebsd-port net-p2p/transmission
# Run specific tests
dbuild test --variant pkg