Skip to content

Promote to Sentinel

Status: Current | Last reviewed: 2026-05-28

Promote a per-service image from a feature branch to the Sentinel production cluster.

The skill flow

/promote-to-sentinel <service>

The skill:

  1. Lints the umbrella chart with the proposed image tag.
  2. Runs helm template to verify the manifest renders.
  3. Opens a PR against main updating charts/trueserve-stack/values-cloud-gcp.yaml.<service>.image.tag.
  4. On merge, the sentinel-deploy-gke.yml workflow dispatches and applies the chart.

Pre-flight checks

Before running the skill:

  • The service's image must be pushed to the registry with the same tag you're promoting.
  • The chart's subchart for the service must accept that tag (i.e., no values schema regressions).
  • All tests passed in CI for the source branch.

Manual fallback

If the skill is unavailable, do the same steps by hand:

# 1. Edit values-cloud-gcp.yaml
#    <service>:
#      image:
#        tag: <new-tag>

# 2. Lint + render
helm lint charts/trueserve-stack
helm template trueserve charts/trueserve-stack \
  -f charts/trueserve-stack/values-cloud-gcp.yaml > /tmp/render.yaml

# 3. Commit, push, open PR
gh pr create --title "[<service>] promote <new-tag> to sentinel" \
  --body "Bumps image tag for $service to $new_tag"

# 4. After merge, dispatch the workflow
gh workflow run sentinel-deploy-gke.yml

Rollback

To roll back, repeat the skill with the previous known-good tag. Sentinel does not auto-rollback on failed deploy — the chart applies and the previous Deployment's pods drain. If the new image fails its readiness probe, the new ReplicaSet stays at 0 ready and the old one keeps serving until you push a fix.

Why it's not a single push-to-main flow

The PR step is deliberate. It produces:

  • A reviewable diff of what changed.
  • An auditable history of who promoted which image when.
  • A pause for someone to read the chart values before they reach prod.

See also