Compare commits

...

1 Commits

Author SHA1 Message Date
xiaoxia 8dd2c2cfc7 fix(ci): P0优化 - pr-automation加concurrency + auto-merge改短作业模式
CI/CD Pipeline / Check if frontend-only change (pull_request) Waiting to run
CI/CD Pipeline / Validate - Code Quality (pull_request) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Waiting to run
CI/CD Pipeline / Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
CI/CD Pipeline / CI Gate (pull_request) Blocked by required conditions
AI Code Review / AI Code Review (pull_request) Waiting to run
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
Preview Deploy / Deploy Preview Environment (pull_request) Waiting to run
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 10s
P0-1: 加concurrency,同一PR只跑一个实例,新触发取消旧的
P0-2: auto-merge从45分钟轮询改成短作业(2次检查),靠pr-auto-scan兜底

预期收益:Runner占用从10个降至最多活跃PR数,单实例运行时间从45min降至~1min
2026-07-28 17:12:21 +08:00
2 changed files with 13 additions and 9 deletions
+6 -2
View File
@@ -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
+7 -7
View File
@@ -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