@@ -530,8 +530,24 @@ jobs:
530530 fi
531531 export RS_KEY
532532
533+ # Ensure azd always targets the live remote state values.
534+ azd env set RS_RESOURCE_GROUP "$RS_RESOURCE_GROUP"
535+ azd env set RS_STORAGE_ACCOUNT "$RS_STORAGE_ACCOUNT"
536+ azd env set RS_CONTAINER_NAME "$RS_CONTAINER_NAME"
537+ azd env set RS_KEY "$RS_KEY"
538+
533539 max_attempts=3
534540 attempt=1
541+ previous_transient_signature=""
542+
543+ extract_transient_signature() {
544+ local log_file="$1"
545+ grep -E 'RequestConflict|ContainerAppOperationInProgress|Operation expired|LeaseIdMissing' "$log_file" \
546+ | sed -E 's/[[:space:]]+/ /g' \
547+ | sed -E 's/[0-9a-fA-F-]{20,}/<id>/g' \
548+ | sort -u \
549+ | tr '\n' '|' || true
550+ }
535551
536552 while [ "$attempt" -le "$max_attempts" ]; do
537553 echo "=== Provision attempt $attempt/$max_attempts ==="
@@ -558,6 +574,21 @@ jobs:
558574 exit "$provision_exit"
559575 fi
560576
577+ current_transient_signature="$(extract_transient_signature "$provision_log")"
578+ if [ -n "$previous_transient_signature" ]; then
579+ if [ "$current_transient_signature" = "$previous_transient_signature" ]; then
580+ echo "Provision stopped: transient errors persisted across attempts (no recovery trend)."
581+ exit "$provision_exit"
582+ fi
583+
584+ echo "Provision stopped: new transient error signature detected compared to previous attempt."
585+ echo "Previous: ${previous_transient_signature}"
586+ echo "Current : ${current_transient_signature}"
587+ exit "$provision_exit"
588+ fi
589+
590+ previous_transient_signature="$current_transient_signature"
591+
561592 sleep_seconds=$((attempt * 60))
562593 echo "Transient conflict detected. Retrying in ${sleep_seconds}s..."
563594 sleep "$sleep_seconds"
0 commit comments