From 8dd2c2cfc7c0ba337a40ccdc612849d8c034c32f Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 28 Jul 2026 17:12:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20P0=E4=BC=98=E5=8C=96=20-=20pr-automa?= =?UTF-8?q?tion=E5=8A=A0concurrency=20+=20auto-merge=E6=94=B9=E7=9F=AD?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P0-1: 加concurrency,同一PR只跑一个实例,新触发取消旧的 P0-2: auto-merge从45分钟轮询改成短作业(2次检查),靠pr-auto-scan兜底 预期收益:Runner占用从10个降至最多活跃PR数,单实例运行时间从45min降至~1min --- .gitea/workflows/pr-automation.yml | 8 ++++++-- scripts/ci/auto_merge.sh | 14 +++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) 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