Skip to content

Deployment

How it works

  1. Push to develop → validates and publishes an immutable image; no prod mutation
  2. 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

BranchEnvironmentValues files
mainprodvalues.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 hand
  • replicaCount — more in prod
  • autoscaling.enabled — true in prod
  • resources.requests — higher scheduling requests in prod (no hard limits)
  • extraEnvs — environment-specific config
  • traefik.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:

Terminal window
git revert <bad-pin-commit>
git push origin main