Create PR, wait for CI, squash merge, watch ArgoCD rollout, and verify pods/logs
Deploy the current changes through the full GitOps pipeline. Follow every step in order — do NOT skip verification.
Before starting, determine which services are affected by the current changes:
git diff --name-only to see changed fileslib/<category>/<app> paths to their Kubernetes namespace (from environments/<category>/spec.json) and app/pod namesgh pr creategh pr checks <number> --watchgh pr merge <number> --squash --delete-branchDo NOT use sleep. Instead, actively poll for the rollout:
First, wait for the manifests branch to update (CI exports manifests on push to main):
gh run list --branch main --limit 1 --json status,conclusion
Poll this with gh run watch until the post-merge CI run completes.
Then watch the affected pods for restart/rollout using kubectl:
kubectl get pods -n <namespace> -l app=<app-name> -w
Use a short timeout (90s). Look for new pod creation or container restart. If the pod doesn't restart, check if ArgoCD has synced:
argocd app get <app-name> --grpc-web -o json | jq '{syncStatus: .status.sync.status, healthStatus: .status.health.status}'
For each affected service:
Pod status: Confirm the pod is Running and containers are Ready:
kubectl get pods -n <namespace> -l app=<app-name>
Logs: Check recent logs for errors (last 2 minutes since rollout):
kubectl logs -n <namespace> -l app=<app-name> --tail=50 --since=2m
Probes (if the change added/modified probes): Confirm no restart loops by checking RESTARTS column and describe the pod to verify probe config:
kubectl describe pod -n <namespace> -l app=<app-name> | grep -A5 'Liveness\|Readiness\|Startup'
Related services: If the change could affect dependent services (e.g. a DB change might affect apps using it), check those pods too.
Report a clear summary: which pods rolled, current status, and any warnings from logs.