d2040789e5
Replace the packer-images gobuilder with a Dockerfile matrix built on each container-base distro image, on a single repo semver. - install golang, gcc and nfpm - bake the sha256-pinned go-cache-plugin v0.1.0 binary onto PATH - run in-image assertions as a --target test build stage - add pull_request build/test/pre-commit and tag-triggered docker workflows
30 lines
1.2 KiB
Markdown
30 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 also gets the unsuffixed `:<version>` and `:latest`.
|
|
|
|
| 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,test,docker}.yaml`.
|
|
|
|
`pre-commit.sh` fails if step 2 is forgotten, or if more than one distro claims `DEFAULT`.
|
|
|
|
## Make
|
|
|
|
make build # build every distro
|
|
make test # build the test stage of every distro (assertions run in-image)
|
|
make build-alma9 # one distro
|
|
make patch|minor|major
|