| # CI Containers | |
| Each subdirectory under `contrib/ci-containers/` holds a hermetic description of | |
| a container image that powers jobs on the [Sourceware | |
| Forge](https://forge.sourceware.org). The directory itself is used as the build | |
| context, so any assets referenced by the `Containerfile` must be present | |
| in the subdirectory. | |
| Keeping the description self-contained guarantees reproducible builds. | |
| ## Building Images | |
| Images are built with [buildah](https://buildah.io) via the helper script | |
| `build-image.sh`. A typical invocation looks like: | |
| ```bash | |
| ./contrib/ci-containers/build-image.sh \ | |
| -d ./contrib/ci-containers/foo \ | |
| -t v1.0 \ | |
| -- --layers --no-cache | |
| ``` | |
| * `-d` - Path to the directory containing the `Containerfile`. | |
| * `-t` - Tag to apply to the resulting image. | |
| * The trailing `--` passes additional flags directly to `buildah` (here we | |
| request layered output and disable the cache). | |
| The full image tag will be the basename of the directory, in this case `foo`, | |
| and the value passed to the `-t/--tag` argument. Our hypothetical image will be | |
| tagged locally as `foo:v1.0`. | |
| ### Verify the build | |
| ```bash | |
| buildah images --json foo:v1.0 | |
| ``` | |
| The command returns a JSON object with the image's ID, size, and other metadata. | |
| ### Test the image locally | |
| ```bash | |
| podman run --rm -it foo:v1.0 /bin/bash | |
| ``` | |
| By running the image interactively you can confirm that the environment behaves | |
| as expected. |