diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e189d9e..1cdcf0b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -620,16 +620,22 @@ jobs: ) echo "environment status: $status; version: $current; health: $health" if [ "$status" = "Ready" ]; then - if [ "$current" = "$prev" ] && { [ "$health" = "Green" ] || [ "$health" = "Yellow" ]; }; then + if [ "$current" != "$prev" ]; then + echo "Rollback reached Ready on version $current, not the previous $prev." >&2 + exit 1 + fi + if [ "$health" = "Green" ] || [ "$health" = "Yellow" ]; then echo "Application version restore complete; previous code is Ready and healthy." exit 0 fi - echo "Rollback reached Ready in an unexpected version/health state." >&2 - exit 1 + # Same convergence gap as the release check above: the previous version + # is back, health has not settled yet, and reporting a failed rollback + # here hides the fact that the restore itself worked. + echo "Previous version is active; waiting for health to leave $health." fi sleep 15 done - echo "Environment did not return to Ready within rollback window." >&2 + echo "Environment did not return to Ready and healthy within the rollback window (last seen: status=$status version=$current health=$health)." >&2 exit 1 deploy-staging: