Skip to content

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