@@ -18,7 +18,7 @@ concurrency:
1818
1919jobs :
2020 dependabot :
21- name : approve and auto- merge
21+ name : approve and merge
2222 runs-on : ubuntu-latest
2323 if : github.event.pull_request.user.login == 'dependabot[bot]' && github.event.pull_request.draft == false
2424 steps :
6969 gh pr review --approve "$PR_URL"
7070 fi
7171
72- - name : Enable auto-merge
72+ - name : Wait for checks
7373 env :
7474 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
7575 PR_URL : ${{ github.event.pull_request.html_url }}
76- run : gh pr merge --auto --squash --delete-branch "$PR_URL"
76+ run : |
77+ set -euo pipefail
78+
79+ deadline=$((SECONDS + 1800))
80+ empty_since=""
81+
82+ while [ "$SECONDS" -lt "$deadline" ]; do
83+ checks_json="$(gh pr checks "$PR_URL" --json name,bucket,workflow 2>/dev/null || true)"
84+ relevant_checks="$(jq '[.[] | select(.workflow != "Dependabot auto-merge" and .name != "approve and merge")]' <<<"${checks_json:-[]}")"
85+ check_count="$(jq 'length' <<<"$relevant_checks")"
86+ failing_count="$(jq '[.[] | select(.bucket == "fail" or .bucket == "cancel")] | length' <<<"$relevant_checks")"
87+ pending_count="$(jq '[.[] | select(.bucket == "pending")] | length' <<<"$relevant_checks")"
88+
89+ if [ "$failing_count" -gt 0 ]; then
90+ echo "$relevant_checks"
91+ echo "::error::At least one check failed or was cancelled."
92+ exit 1
93+ fi
94+
95+ if [ "$check_count" -eq 0 ]; then
96+ if [ -z "$empty_since" ]; then
97+ empty_since="$SECONDS"
98+ fi
99+
100+ if [ $((SECONDS - empty_since)) -ge 90 ]; then
101+ echo "No non-auto-merge checks were reported after 90 seconds."
102+ exit 0
103+ fi
104+ elif [ "$pending_count" -eq 0 ]; then
105+ echo "All reported non-auto-merge checks passed or were skipped."
106+ exit 0
107+ else
108+ empty_since=""
109+ fi
110+
111+ sleep 15
112+ done
113+
114+ echo "::error::Timed out waiting for checks to finish."
115+ exit 1
116+
117+ - name : Merge Dependabot PR
118+ env :
119+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
120+ PR_URL : ${{ github.event.pull_request.html_url }}
121+ run : gh pr merge --squash --delete-branch "$PR_URL"
0 commit comments