From 92c604f794ef31115ce00f0847cfe81fcfcfab18 Mon Sep 17 00:00:00 2001 From: pooneyy <85266337+pooneyy@users.noreply.github.com> Date: Sun, 17 Aug 2025 16:47:46 +0800 Subject: [PATCH] Update merge-prs.yml: Add PR readiness check before merging Renovate PRs Introduces a step to wait for all open Renovate PRs to reach a mergeable state before attempting to merge. This prevents premature merging and ensures only PRs with a 'CLEAN' merge state are processed. --- .github/workflows/merge-prs.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/merge-prs.yml b/.github/workflows/merge-prs.yml index 3c5e5712e..0771e0636 100644 --- a/.github/workflows/merge-prs.yml +++ b/.github/workflows/merge-prs.yml @@ -18,7 +18,29 @@ jobs: - name: 登录到 GitHub CLI run: gh auth login --with-token <<< "${{ github.token }}" + - name: 检查 PR + id: check-prs + run: | + pr_list=$( gh pr list --state open --author "app/renovate" --json number --jq '.[] | .number' ) + + if [ -z "$pr_list" ]; then + echo "没有开放的 PR" + else + for ((i=1; i<=60; i++)); do + if [ -n "$pr_list" ]; then + pr_list=$( gh pr list --state open --author "app/renovate" --json number,mergeStateStatus --limit 1000 --jq '.[] | select(.mergeStateStatus == "UNKNOWN") | .number' ) + + echo "等待...($i/60)" + else + echo "prs_status=true" >> $GITHUB_OUTPUT + break + fi + sleep 1 + done + fi + - name: 获取可合并的 PR + if: ${{ steps.check-prs.outputs.prs_status == 'true'}} id: get-prs run: | pr_list=$( gh pr list --state open --author "app/renovate" --json number,mergeStateStatus --limit 1000 --jq 'sort_by(.number) | .[] | select(.mergeStateStatus == "CLEAN") | .number' ) @@ -29,6 +51,7 @@ jobs: echo "pr_list=$pr_list" >> $GITHUB_OUTPUT - name: 合并 PR + if: ${{ steps.get-prs.outputs.pr_list != '' }} run: | for pr in ${{ steps.get-prs.outputs.pr_list }}; do if ! gh pr merge $pr --squash --delete-branch --body ""; then