blob: bd985e9ebe4c866436a679f9e9a1725f096b9d41 [file] [log] [blame]
# 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.