Skip to content

Local and test container images

Production releases publish semver tags (v0.3.0, 0.3.0, …) to ghcr.io/konih/kollect via release workflow. For manual maintainer testing against a real registry or a remote cluster, use maintainer-only tags that never collide with release semver.

Not for production

Tags such as local, test-*, and dev-* are maintainer-only. Do not reference them in Helm values, GitOps repos, or customer-facing docs.

Build for kind / minikube (load locally)

Builds a single-platform image into the local daemon (default linux/amd64):

task docker:build:local
# → ghcr.io/konih/kollect:local

kind load docker-image ghcr.io/konih/kollect:local --name kollect-dev

Override repository, tag, platform, or container tool:

IMAGE_REPO=ghcr.io/konih/kollect IMAGE_TAG=dev-me PLATFORMS=linux/arm64 task docker:build:local
CONTAINER_TOOL=podman task docker:build:local

The legacy kind workflow (task docker:buildkollect-controller-manager:dev) remains unchanged; see DEVELOPMENT.md.

Build and push to GHCR

Push requires a one-time registry login (do not commit tokens):

docker login ghcr.io
# GitHub → Settings → Developer settings → Personal access tokens (read:packages, write:packages)

Default tag is the current commit short SHA (test-<short-sha>):

task docker:push:local
# → ghcr.io/konih/kollect:test-a1b2c3d

IMAGE_TAG=test-$(git rev-parse --short HEAD) task docker:push:local
IMAGE_TAG=local-dev IMAGE_REPO=ghcr.io/konih/kollect task docker:push:local

Multi-arch push (optional):

PLATFORMS=linux/amd64,linux/arm64 task docker:push:local

Semver-like tags (v0.3.0, 0.3.0-rc.1) are rejected by the script so local tasks cannot accidentally overwrite release tags.

Environment reference

Variable Default Purpose
IMAGE_REPO ghcr.io/konih/kollect Registry repository
IMAGE_TAG local (build) / test-<short-sha> (push) Maintainer-only tag
PLATFORMS linux/amd64 Single platform; comma-separated for multi-arch push
CONTAINER_TOOL docker docker or podman