From 499b9678e1a487657a78d3e4db9f4a3b28cbdb9e Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sun, 30 Aug 2026 13:55:35 +0300 Subject: [PATCH] test: support isolated canary rollback drill --- deploy/run-production-canary.sh | 5 +++++ tests/deployment/stable-release-set-guard_test.sh | 2 ++ 2 files changed, 7 insertions(+) diff --git a/deploy/run-production-canary.sh b/deploy/run-production-canary.sh index 7b39b4b..ee9925a 100644 --- a/deploy/run-production-canary.sh +++ b/deploy/run-production-canary.sh @@ -12,6 +12,7 @@ SLOT="${CANDIDATE_SLOT:-b}" STABLE_PROJECT="${STABLE_PROJECT:-assistant}" CANDIDATE_PROJECT="${CANDIDATE_PROJECT:-assistant-slot-$SLOT}" HEALTH_ATTEMPTS="${HEALTH_ATTEMPTS:-360}" +PROMOTE_AFTER_CANARY="${PROMOTE_AFTER_CANARY:-true}" [[ "$SLOT" =~ ^[a-z0-9-]+$ ]] || { echo "invalid candidate slot" >&2; exit 2; } [[ "$CANDIDATE_PROJECT" != "$STABLE_PROJECT" ]] || { echo "candidate and stable Compose projects must differ" >&2; exit 2; } @@ -103,6 +104,10 @@ headers=$(mktemp) trap 'rm -f "$headers"' EXIT if ! curl -fsS --max-time 10 -D "$headers" -H 'X-Assistant-Canary: true' "https://assistant.cin.su/login" -o /dev/null; then fail_rollback; fi grep -qi '^X-Assistant-Traffic-Target: candidate' "$headers" || fail_rollback +if [[ "$PROMOTE_AFTER_CANARY" != true ]]; then + echo "isolated candidate ReleaseSet canary ready slot=$SLOT project=$CANDIDATE_PROJECT revision=$REVISION" + exit 0 +fi control /v1/releases/promote || fail_rollback assert_stable_ids_unchanged echo "isolated candidate ReleaseSet promoted slot=$SLOT project=$CANDIDATE_PROJECT revision=$REVISION" diff --git a/tests/deployment/stable-release-set-guard_test.sh b/tests/deployment/stable-release-set-guard_test.sh index 36b0a50..83cbc3c 100644 --- a/tests/deployment/stable-release-set-guard_test.sh +++ b/tests/deployment/stable-release-set-guard_test.sh @@ -22,6 +22,8 @@ grep -Fq 'after=$(stable_ids)' "$supervisor" grep -Fq 'stable container IDs changed' "$supervisor" grep -Fq 'HEALTH_ATTEMPTS="${HEALTH_ATTEMPTS:-360}"' "$canary" grep -Fq 'seq 1 "$HEALTH_ATTEMPTS"' "$canary" +grep -Fq 'PROMOTE_AFTER_CANARY="${PROMOTE_AFTER_CANARY:-true}"' "$canary" +grep -Fq 'if [[ "$PROMOTE_AFTER_CANARY" != true ]]' "$canary" grep -Fq 'name: assistant_default' "$candidate_compose" grep -Fq 'external: true' "$candidate_compose" ! grep -Fq 'candidate:' "$stable_compose"