CI: Woodpecker
- Self-hosted on Forgejo (deployed by pal-e-platform)
- Pipeline defined in
.woodpecker.yaml in each repo
- Builds container images, pushes to Harbor
- Repos must be activated before first pipeline:
POST /api/repos?forge_remote_id=N
CD: ArgoCD + Image Updater
- ArgoCD watches Forgejo repos for k8s manifests
- Image Updater polls Harbor for new image tags
- On new image: writes
.argocd-source-*.yaml back to repo via git commit
- Strategy:
newest-build with SHA regex
Flow
git push → Woodpecker builds → Harbor stores image → Image Updater detects → ArgoCD deploys
Key Rules
- CI never pushes directly to main (uses PRs)
- CI never uses
[skip ci]
- All workflows must be idempotent