Helm Release Stuck in "pending-upgrade" - Recover in CI
A Helm release is wedged in a pending-* status because an operation was interrupted and never reached a terminal state. Every later helm upgrade then errors that an operation is already in progress.
What this error means
helm status shows pending-upgrade/pending-install/pending-rollback, and new operations fail with "another operation in progress". The release never settles to deployed on its own.
$ helm status api -n prod
STATUS: pending-upgrade
# subsequent: Error: UPGRADE FAILED: another operation (install/upgrade/rollback)
# is in progressCommon causes
Interrupted Helm operation
A CI job timeout, cancellation, or crash killed Helm mid-operation, leaving the release record in a pending state with no rollback.
Helm process lost connectivity mid-apply
A network drop to the API server during --wait can leave the operation marked pending even though some changes applied.
How to fix it
Roll back to the last deployed revision
If a previously deployed revision exists, rolling back clears the pending state.
helm history api -n prod
helm rollback api <last-deployed-revision> -n prodDelete the pending release record (no good revision)
For a stuck first install with no deployed revision, remove the pending release secret, then reinstall.
kubectl get secret -n prod -l owner=helm,name=api
kubectl delete secret -n prod \
sh.helm.release.v1.api.v1 # the pending revision's secret
helm upgrade --install api ./chart -n prodHow to prevent it
- Use
--atomic --timeoutso interrupted upgrades roll back instead of hanging. - Give Helm jobs generous timeouts and avoid cancelling them mid-flight.
- Serialize releases so retries do not collide with an in-flight operation.