@@ -111,9 +111,18 @@ echo "$dependabot_prs" | jq -c '.[]' | while read -r pr; do
111111 continue
112112 fi
113113
114+ # Check merge status before approving so we do not spend an approval on a PR that cannot merge.
115+ merge_status=$( gh pr view " $pr_number " -R " $REPO " --json mergeStateStatus -q ' .mergeStateStatus' )
116+ case " $merge_status " in
117+ DIRTY|BLOCKED)
118+ echo " ⚠️ Skipping PR #$pr_number because it cannot be auto-merged (status: $merge_status )"
119+ continue
120+ ;;
121+ esac
122+
114123 # Check if PR needs approval (i.e., hasn't been approved already)
115124 already_approved=$( echo " $pr " | jq -r ' .reviews[] | select(.state == "APPROVED") | .state' | grep -c " APPROVED" || true)
116-
125+
117126 if [ " $already_approved " -eq 0 ]; then
118127 echo " ✅ Approving PR #$pr_number "
119128 gh pr review " $pr_number " -R " $REPO " --approve -b " Automatically approved by dependabot auto-approve workflow"
@@ -127,9 +136,6 @@ echo "$dependabot_prs" | jq -c '.[]' | while read -r pr; do
127136 gh pr merge " $pr_number " -R " $REPO " --auto --squash
128137 echo " ✅ Auto-merge enabled for PR #$pr_number "
129138 elif [ " $all_checks_pass " = true ]; then
130- # Check if PR is up-to-date with base branch
131- merge_status=$( gh pr view " $pr_number " -R " $REPO " --json mergeStateStatus -q ' .mergeStateStatus' )
132-
133139 case " $merge_status " in
134140 CLEAN)
135141 echo " ✅ PR #$pr_number is up to date with base branch"
@@ -143,9 +149,6 @@ echo "$dependabot_prs" | jq -c '.[]' | while read -r pr; do
143149 gh pr merge " $pr_number " -R " $REPO " --auto --squash
144150 echo " ✅ Auto-merge enabled for PR #$pr_number "
145151 ;;
146- DIRTY|BLOCKED)
147- echo " ⚠️ Skipping PR #$pr_number because it cannot be auto-merged (status: $merge_status )"
148- ;;
149152 * )
150153 echo " ⚠️ Skipping PR #$pr_number due to unsupported merge status: $merge_status "
151154 ;;
0 commit comments