CI/CD¶
Continuous integration and delivery pipeline for the home lab.
Overview¶
The CI/CD pipeline combines three systems to automate code quality, image builds, dependency updates, and cluster deployment:
flowchart LR
Dev((Developer)) -->|Push / PR| GitHub[GitHub]
subgraph CI["GitHub Actions"]
Lint[Lint Workflow]
Build[Docker Build Workflow]
end
subgraph Updates["Dependency Management"]
Renovate[Renovate Bot]
end
subgraph CD["Continuous Delivery"]
ArgoCD[ArgoCD]
end
GitHub --> Lint
GitHub --> Build
Renovate -->|PRs| GitHub
Build -->|Push images| GHCR[ghcr.io]
GitHub -->|main branch| ArgoCD
ArgoCD -->|Sync| Cluster[Cluster] Pipeline Components¶
GitHub Actions¶
Two workflows automate CI tasks:
| Workflow | Trigger | Purpose |
|---|---|---|
| Lint | Pull requests to main | Code quality checks on PR changes |
| Build Docker Images | Push to main (docker/**) or manual dispatch | Build and push multi-arch Docker images to GHCR |
Details: GitHub Actions
Docker Builds¶
The Docker build workflow provides:
- Automatic discovery of changed Dockerfiles
- Version extraction from
ARGdirectives - Multi-platform builds (linux/amd64, linux/arm64)
- Push to GitHub Container Registry (ghcr.io)
Details: Docker Builds
Renovate¶
Renovate Bot automatically manages dependency updates:
- Extends bjw-s presets for home-ops patterns
- Auto-merges Docker digest and patch updates
- Auto-merges GitHub Actions digest and patch updates
- Auto-merges Helm patch updates
- Groups related packages (Cilium, Rook Ceph, Talos)
- Custom Grafana dashboard version tracking
Details: Renovate
ArgoCD¶
ArgoCD provides GitOps-based continuous delivery:
- Watches the
mainbranch of the repository - Auto-discovers applications via ApplicationSets
- Syncs Kubernetes manifests to the cluster
- Provides health monitoring and rollback capabilities
Details: ArgoCD Setup
Workflow Summary¶
| Event | Action | Result |
|---|---|---|
| PR opened | Lint workflow runs | Code quality verified |
PR merged to main with docker/ changes | Docker build workflow | New images pushed to GHCR |
PR merged to main with app changes | ArgoCD detects change | Application synced to cluster |
| Renovate detects update | Creates PR | Auto-merged (digest/patch) or awaits review |
| Manual dispatch | Docker build for all images | All images rebuilt and pushed |
Documentation Deployment¶
The documentation site itself is also CI/CD managed:
| Workflow | Trigger | Purpose |
|---|---|---|
| Deploy Docs | Push to main (docs/** or mkdocs.yml) | Build and deploy MkDocs Material site to GitHub Pages |