The Linux NVMe tooling pre-build containers for continuous integration
Dockerfiles are generated from ci-containers.yaml + templates/*.j2 by
generate, a single script covering both generation and building:
./generate generate # render every Dockerfile
./generate generate --target main --distro debian # render just one
./generate generate --target cross --arch s390x # render one cross Dockerfile
./generate build # generate + docker build main/staging/nvmetcli
./generate build --target containerdisk --variant nvmetcli --distro fedora
./generate build --target cross --arch armhf
./generate all # generate everything, build main/staging/nvmetcli
./generate smoke # dummy muon/samu + buildx-build every main Dockerfile
Run ./generate <subcommand> --help for the full option list. build
regenerates Dockerfiles before building by default (--no-generate to skip);
the container command defaults to $DOCKER or sudo docker (--docker to
override).
The rendered Dockerfiles under main/, staging/, nvmetcli/, etc. are
not checked in (see .gitignore) — the GitHub workflow generates each one
right before it's built, so they can never go stale relative to
ci-containers.yaml. Run ./generate generate locally to render them into
your working tree before building by hand.
(main/Dockerfile.ubuntu.{armhf,ppc64le,s390x} are the Ubuntu cross-compile
containers, rendered from templates/Dockerfile.ubuntu-cross.j2 and the
cross_arches/bundles.cross entries in ci-containers.yaml, same as
everything else under main/.)