2c39a17e69
The unsuffixed :<version> and :latest came from a second, independent buildx step, so they resolved to a different digest than :<version>-<suffix> — nobody had tested the bits consumers pin. Published v0.1.0 shows it: the amd64 children share four layers and differ in the top one. Retag the manifest the matrix step just pushed with imagetools create. Drop the duplicate build.
32 lines
1.2 KiB
Markdown
32 lines
1.2 KiB
Markdown
# container-gobuilder
|
|
|
|
The estate's Go toolchain image, built on each `container-base` distro image.
|
|
Published as `artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:<version>-<suffix>`;
|
|
the default distro's build is retagged as the unsuffixed `:<version>` and `:latest`,
|
|
so all three resolve to one digest.
|
|
|
|
| distro | from | tag suffix | default |
|
|
| --- | --- | --- | --- |
|
|
| `alma9` | `docker-internal/almalinux9:<base version>` | `alma9` | yes |
|
|
|
|
Adds `golang`, `gcc` and `nfpm`, and bakes in the `go-cache-plugin` binary on `PATH`
|
|
so Go pipelines get the shared build cache with no download step. No credentials and no
|
|
`GOCACHEPROG` value are baked in — consumers set those.
|
|
|
|
The `container-base` release this image builds on is `BASE_VERSION` in the `Dockerfile`.
|
|
|
|
## Adding a distro
|
|
|
|
1. `distros/<name>/distro.env` — `BASE_IMAGE_NAME`, `IMAGE`, `TAG_SUFFIX`, `DEFAULT`, `PACKAGES`, `GO_MIN`.
|
|
2. One `include` entry in each of `.woodpecker/{build,docker}.yaml`.
|
|
|
|
The `check-distros` pre-commit hook fails if step 1 or 2 is incomplete, or if more than
|
|
one distro claims `DEFAULT`.
|
|
|
|
## Make
|
|
|
|
make build # build every distro
|
|
make pre-commit # uvx pre-commit run --all-files
|
|
make build-alma9 # one distro
|
|
make patch|minor|major
|