8888 MERGE_METHOD : ${{ inputs.merge_method }}
8989 DELETE_BRANCH : ${{ inputs.delete_branch }}
9090 run : |
91+ echo "Fetching open PRs with label '${LABEL}'..."
9192 PR_LIST=$(gh pr list \
9293 --label "${LABEL}" \
9394 --state open \
@@ -99,11 +100,12 @@ jobs:
99100 echo "" >> $GITHUB_STEP_SUMMARY
100101
101102 if [ "${PR_COUNT}" -eq 0 ]; then
103+ echo "No open PRs found with label '${LABEL}'."
102104 echo "No open PRs found with label \`${LABEL}\`." >> $GITHUB_STEP_SUMMARY
103- echo "No PRs to merge."
104105 exit 0
105106 fi
106107
108+ echo "Found ${PR_COUNT} PR(s) with label '${LABEL}'."
107109 echo "Found ${PR_COUNT} PR(s) with label \`${LABEL}\`." >> $GITHUB_STEP_SUMMARY
108110 echo "" >> $GITHUB_STEP_SUMMARY
109111 echo "| PR | Title | Status |" >> $GITHUB_STEP_SUMMARY
@@ -118,23 +120,45 @@ jobs:
118120 MERGEABLE=$(echo "${PR_LIST}" | jq -r ".[] | select(.number == ${NUMBER}) | .mergeable")
119121 STATE=$(echo "${PR_LIST}" | jq -r ".[] | select(.number == ${NUMBER}) | .mergeStateStatus")
120122
123+ echo "---"
124+ echo "PR #${NUMBER}: ${TITLE}"
125+ echo " mergeable=${MERGEABLE} state=${STATE}"
126+
127+ # GitHub may not have computed the merge state yet — retry up to 5 times
128+ RETRIES=0
129+ while [ "${STATE}" == "UNKNOWN" ] && [ "${RETRIES}" -lt 5 ]; do
130+ RETRIES=$((RETRIES + 1))
131+ echo " State is UNKNOWN, retrying in 10s... (${RETRIES}/5)"
132+ sleep 10
133+ PR_DATA=$(gh pr view "${NUMBER}" --json mergeable,mergeStateStatus)
134+ MERGEABLE=$(echo "${PR_DATA}" | jq -r '.mergeable')
135+ STATE=$(echo "${PR_DATA}" | jq -r '.mergeStateStatus')
136+ echo " mergeable=${MERGEABLE} state=${STATE}"
137+ done
138+
121139 MERGE_ARGS=("${NUMBER}" "--${MERGE_METHOD}")
122140 [ "${DELETE_BRANCH}" == "true" ] && MERGE_ARGS+=(--delete-branch)
123141
124142 if [ "${MERGEABLE}" == "MERGEABLE" ] && [ "${STATE}" == "CLEAN" ]; then
143+ echo " Merging with method '${MERGE_METHOD}'..."
125144 if gh pr merge "${MERGE_ARGS[@]}"; then
145+ echo " Merged successfully."
126146 echo "| [#${NUMBER}](${GITHUB_SERVER_URL}/${GH_REPO}/pull/${NUMBER}) | ${TITLE} | Merged |" >> $GITHUB_STEP_SUMMARY
127147 MERGED=$((MERGED + 1))
128148 else
149+ echo " ::error::Failed to merge PR #${NUMBER}."
129150 echo "| [#${NUMBER}](${GITHUB_SERVER_URL}/${GH_REPO}/pull/${NUMBER}) | ${TITLE} | Failed |" >> $GITHUB_STEP_SUMMARY
130151 FAILED=$((FAILED + 1))
131152 fi
132153 else
154+ echo " Skipping — not ready (mergeable=${MERGEABLE}, state=${STATE})."
133155 echo "| [#${NUMBER}](${GITHUB_SERVER_URL}/${GH_REPO}/pull/${NUMBER}) | ${TITLE} | Skipped (${STATE}) |" >> $GITHUB_STEP_SUMMARY
134156 SKIPPED=$((SKIPPED + 1))
135157 fi
136158 done
137159
160+ echo "---"
161+ echo "Done. Merged=${MERGED} Skipped=${SKIPPED} Failed=${FAILED}"
138162 echo "" >> $GITHUB_STEP_SUMMARY
139163 echo "**Merged:** ${MERGED} | **Skipped:** ${SKIPPED} | **Failed:** ${FAILED}" >> $GITHUB_STEP_SUMMARY
140164
0 commit comments