TazPod: CI Detail
Level 3 (Detail) — Conditional build pipeline for CLI and container images.
Concept
The CI pipeline builds the tazpod CLI binary unconditionally on every push to master, but only builds Docker images if the relevant files (Dockerfiles, dotfiles) have changed.
Workflow
File: .github/workflows/build-push.yml
Trigger: push to master.
Stage 1: CLI Build
Always runs:
go vet ./...go test ./...go build -ldflags "-X main.Version=$(cat VERSION)" -o tazpod cmd/tazpod/main.go- Upload binary as GitHub Release artifact
Stage 2: Conditional Docker Build
Only runs if changes detected in:
.tazpod/Dockerfile.*dotfiles/cmd/internal/.github/workflows/
Uses GitHub Actions cache for Docker layer caching.
Build Matrix
| Layer | Dockerfile | Image Tag | Depends On |
|---|---|---|---|
| base | .tazpod/Dockerfile.base | tazzo/tazpod-base:<version> | — |
| aws | .tazpod/Dockerfile.aws | tazzo/tazpod-aws:<version> | base published |
| k8s | .tazpod/Dockerfile.k8s | tazzo/tazpod-k8s:<version> | aws published |
| ai | .tazpod/Dockerfile.ai | tazzo/tazpod-ai:<version> | k8s published |
Each layer:
- Tags with version from
VERSIONfile (e.g.,tazzo/tazpod-ai:0.3.18) - Tags with
latest - Pushes to Docker Hub
Versioning
File: VERSION
0.3.18
Used both for CLI --version flag (via ldflags) and for Docker image tags.
See Also
- Parent hub: tazpod
- Topic: Image Hierarchy
- Reference: Taskfile.yml