diff --git a/.gitea/workflows/pr-automation.yml b/.gitea/workflows/pr-automation.yml index 663576e21..b8606dffb 100755 --- a/.gitea/workflows/pr-automation.yml +++ b/.gitea/workflows/pr-automation.yml @@ -5,6 +5,10 @@ on: types: [synchronize, opened, ready_for_review, review_requested] workflow_dispatch: +concurrency: + group: pr-automation-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + permissions: contents: read @@ -13,7 +17,7 @@ jobs: name: Auto Approve on CI Green runs-on: ci-check if: github.event_name == 'pull_request' && !github.event.pull_request.draft - timeout-minutes: 3 # 长等待模式:等CI全绿后自动合并,不遗漏任何PR + timeout-minutes: 3 # 短作业模式:快速判断后退出,靠pr-auto-scan兜底 steps: - name: Checkout code shell: sh @@ -56,7 +60,7 @@ jobs: name: Auto Merge on CI Green + Approved runs-on: ci-check if: github.event_name == 'pull_request' && !github.event.pull_request.draft && github.event.pull_request.base.ref == 'develop' - timeout-minutes: 45 # 长等待模式:等CI全绿后自动合并,不遗漏任何PR + timeout-minutes: 2 # 短作业模式:快速判断后退出,靠pr-auto-scan每5分钟兜底 steps: - name: Checkout code shell: sh diff --git a/scripts/ci/auto_merge.sh b/scripts/ci/auto_merge.sh index acb8dcdef..d5adc19a0 100644 --- a/scripts/ci/auto_merge.sh +++ b/scripts/ci/auto_merge.sh @@ -31,15 +31,15 @@ echo "检查CI Gate统一门禁" echo # 初始等待30秒,给CI启动写status的时间 -echo "等待30秒让CI启动..." -sleep 30 +echo "等待15秒让CI启动..." +sleep 15 # 405连续计数器 MERGE_405_COUNT=0 -MAX_405_RETRIES=10 +MAX_405_RETRIES=2 # 轮询等待,最多30分钟(180次x10秒) -for attempt in $(seq 1 90); do # 最多等45分钟(90次x30秒),确保等得到Worker构建完成 +for attempt in $(seq 1 2); do # 短作业模式:检查2次就退出,靠pr-auto-scan每5分钟兜底 ALL_SUCCESS=true ANY_FAILED=false ANY_PENDING=false @@ -106,7 +106,7 @@ for attempt in $(seq 1 90); do # 最多等45分钟(90次x30秒),确保等得 "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" > /dev/null 2>&1 || true exit 0 fi - sleep 30 + sleep 15 continue else echo "自动合并失败 (HTTP $HTTP_CODE)" @@ -129,9 +129,9 @@ for attempt in $(seq 1 90); do # 最多等45分钟(90次x30秒),确保等得 exit 0 fi - sleep 30 + sleep 15 done echo -echo "快速检查超时(3分钟),CI尚未全绿或无审批,退出等待下次触发" +echo "短作业检查完成(CI尚未全绿),CI尚未全绿或无审批,退出等待下次触发" exit 0