GitOps Deployment
All services deploy to the ai-accountant namespace on k3s via ArgoCD.
Flow
graph TB
PR[PR merged to main] --> CI[GitHub Actions CI]
CI --> Build[Build container image]
Build --> Push[Push to GHCR with SHA tag]
Push --> Update[Update deploy/k8s manifest with SHA]
Update --> Commit[CI commits manifest change]
Commit --> ArgoCD[ArgoCD detects change]
ArgoCD --> Deploy[Roll out new pod]
Zero manual steps. No kubectl rollout restart.
Services
| Service | Image | CI trigger |
|---|---|---|
| Event Store API | ghcr.io/stig-johnny/ai-accountant-eventstore:<sha> |
src/EventStoreApi/** |
| Accounting API | ghcr.io/stig-johnny/ai-accountant-accounting:<sha> |
src/AccountingApi/** |
| Cost API | ghcr.io/stig-johnny/ai-accountant-cost:<sha> |
src/CostApi/** |
| Book-E | ghcr.io/stig-johnny/automate-e:<sha> |
automate-e repo |
Each service has its own Dockerfile and CI path trigger. Changing one service doesn't rebuild the others.
Repos
| Repo | Contains | Deploys |
|---|---|---|
ai-accountant |
Event Store API, Accounting API, Cost API, Book-E config, k8s manifests, docs | All services to ai-accountant namespace |
automate-e |
Book-E runtime code | Updates book-e-deployment.yaml in ai-accountant |
cluster-gitops |
ArgoCD Application, Terraform, runners | ArgoCD points to ai-accountant/deploy/k8s/ |
ArgoCD
Single ArgoCD Application watches deploy/k8s/ in the ai-accountant repo. All manifests in that directory are synced.
source:
repoURL: https://github.com/Stig-Johnny/ai-accountant.git
targetRevision: HEAD
path: deploy/k8s