Skip to content

Promote Image

Deploy a new image tag to a tenant environment.

Purpose

Deploy a specific image tag to one or all tenant environments by triggering do-deploy.yml workflow dispatch.

When to use

  • Rolling out a new release to staging or production
  • Re-deploying an older tag (rollback)
  • Promoting a staging-validated tag to production

Steps

Deploy latest release to a tenant

  1. Go to unipuka/soa -> Actions -> do-deploy.yml -> Run workflow
  2. Set tag = desired image tag (e.g. v1.2.3 or git SHA)
  3. Set tenant = oep-stg / mansety-prd / us-prd
  4. For prod tenants: reviewer approval required before workflow proceeds
  5. Workflow commits chore(deploy): bump <tenant> to <tag> to unipuka-infra-ops/master
  6. Argo CD detects change within 3 min, runs PreSync migrate Job, then rolls Deployments

Re-deploy an older tag (rollback)

If the image tag is still in DOCR (within 30-tag retention window):

# Dispatch with the older tag
gh workflow run do-deploy.yml -R unipuka/soa \
  -f tag=v1.1.0 -f tenant=oep-stg

If image was GC'd from DOCR (beyond 30-tag window), rebuild first:

# Rebuild image from historical commit
gh workflow run do-build.yml -R unipuka/soa \
  -f ref=<git-sha-or-tag>
# Then deploy as normal

DOCR retention

Weekly GC keeps last 30 tagged images per repo. Images beyond 30 are deleted. Rebuild + republish any tag using do-build.yml ref input.

Rollback

Git revert the deploy commit in unipuka-infra-ops/master - Argo CD prune + selfHeal will re-sync the previous tag.

V&V

  • argocd app get <tenant>-laravel shows new image tag and Synced/Healthy
  • kubectl get pods -n <tenant> all Running with new image
  • curl https://<hostname>/health returns 200