Add matrixed gobuilder image build #1

Merged
benvin merged 5 commits from container-scaffold into main 2026-09-27 23:34:31 +10:00
Member

The Go toolchain image comes from packer-images today, rebuilt from a rootfs tarball and with no shared build cache, so every Go pipeline downloads go-cache-plugin itself. This rebuilds it as a Dockerfile matrix on top of the container-base distro images, on a single repo semver.

  • push docker-internal/gobuilder:<version>-<suffix>, plus :<version> and :latest for the default distro
  • install golang, gcc and nfpm
  • bake the sha256-pinned go-cache-plugin v0.1.0 binary onto PATH, no credentials
  • lint with pre-commit.com (hadolint, shellcheck) plus a local hook holding distros/ to the Woodpecker matrices

Depends on container-base v0.1.0: the Dockerfile pins almalinux9:0.1.0. Tests land separately.

The Go toolchain image comes from packer-images today, rebuilt from a rootfs tarball and with no shared build cache, so every Go pipeline downloads `go-cache-plugin` itself. This rebuilds it as a Dockerfile matrix on top of the container-base distro images, on a single repo semver. - push `docker-internal/gobuilder:<version>-<suffix>`, plus `:<version>` and `:latest` for the default distro - install `golang`, `gcc` and `nfpm` - bake the sha256-pinned `go-cache-plugin` v0.1.0 binary onto `PATH`, no credentials - lint with pre-commit.com (hadolint, shellcheck) plus a local hook holding `distros/` to the Woodpecker matrices Depends on container-base v0.1.0: the `Dockerfile` pins `almalinux9:0.1.0`. Tests land separately.
unkin-agent added 1 commit 2026-09-27 17:55:47 +10:00
Add matrixed gobuilder image build
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline failed
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
unkin-agent added 1 commit 2026-09-27 18:07:08 +10:00
Take the estate repo name from distro.env
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline failed
ci/woodpecker/pr/test Pipeline failed
c90a0e1fe3
Keeps the test assertions distro-agnostic so a non-el9 matrix entry needs no
script edit.
unkin-agent added 1 commit 2026-09-27 18:37:24 +10:00
Drop the syntax directive
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/pr/build Pipeline failed
f755ae30b9
It pulled a frontend image from Docker Hub for features this Dockerfile does
not use.
unkin-agent added 1 commit 2026-09-27 20:17:08 +10:00
Replace pre-commit.sh with the pre-commit framework and drop the test harness
ci/woodpecker/pr/build Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful
06b159694c
The hand-rolled pre-commit.sh reimplemented what upstream hooks already do.
Move to pre-commit.com with the estate's usual pre-commit-hooks set plus
hadolint and shellcheck, and keep the one check with no upstream equivalent
(distros/ vs the Woodpecker matrices) as a repo: local hook.

The test harness goes; tests will be reintroduced differently.

- add .pre-commit-config.yaml and ci/check-distros.sh
- delete pre-commit.sh, test.sh and .woodpecker/test.yaml
- run uvx pre-commit run --all-files from .woodpecker/pre-commit.yaml and make pre-commit
- drop the Dockerfile test stage and the make test targets
unkin-agent added 1 commit 2026-09-27 22:19:26 +10:00
Get the internal CA into the buildkit container via registry
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
83beaff2db
The buildkit_config setting does not exist in the plugin-docker-buildx build
we run: the binary has no PLUGIN_BUILDKIT_CONFIG, so the block was dead YAML
and `docker buildx create` ran without --config, leaving the spawned buildkit
container with no internal CA. The plugin only writes a buildkit.toml
(pointing at /etc/docker/certs.d/<registry>/ca.crt) when `registry` is set.

Set registry on the build step, drop the dead block from every step, and
fail ci/check-distros.sh when a matrix value restating a distro.env key
drifts from it.
benvin merged commit 8a41e9ba03 into main 2026-09-27 23:34:31 +10:00
benvin deleted branch container-scaffold 2026-09-27 23:34:32 +10:00
Sign in to join this conversation.