Overview

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:

  1. Build — automatically detects Containerfile variants and builds native FreeBSD images with Podman.
  2. Test — executes Quality Gates (CIT) to validate port bindings, health endpoints, and visual regressions.
  3. Publish — handles multi-arch tagging, registry authentication, and SBOM generation.

Key features#

  • Multi-variant builds — automatically detects Containerfile and Containerfile.<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.md and Containerfile from compose.yaml metadata.
  • 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 install

Quick 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

Updated

Was this page helpful?