Deployment
How it works
- Push to
develop→ validates and publishes an immutable image; no prod mutation - Push to
main→ pins the immutable image and ArgoCD reconciles prod
The deploy.yml workflow handles everything:
- Builds the container image and pushes it to
ghcr.io/null-capital/solutions-agents, tagged with the immutable commit SHA - Pins that SHA into committed deploy values; ArgoCD detects the Git change and
reconciles it. A newborn app is deliberately
autoSync: false: manually verify the first sync, then enable auto-sync in its onboarding declaration.
Environments
| Branch | Environment | Values files |
|---|---|---|
main | prod | values.yaml + values.prod.yaml |
Manual deploy
Trigger via GitHub Actions → “Run workflow” on deploy.yml and pick the
environment.
ArgoCD production dispatches must run from main.
Helm values
What you typically change per environment:
image.tag— set automatically by CI; never edit by handreplicaCount— more in prodautoscaling.enabled— true in prodresources.requests— higher scheduling requests in prod (no hard limits)extraEnvs— environment-specific configtraefik.hosts— DNS hostname per environment
Roll back
Git owns desired state. Revert the image-pin (or vendor-digest) commit and let ArgoCD sync the prior immutable reference:
git revert <bad-pin-commit>git push origin main