From fc94185626ab71b72bae1cdbffcbb74a4d88f056 Mon Sep 17 00:00:00 2001 From: randypanding <66171646+randypanding@users.noreply.github.com> Date: Fri, 21 Aug 2026 19:08:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20post-merge=20=E7=86=94=E6=96=AD?= =?UTF-8?q?=E9=97=B8=203=E2=80=94=E2=80=9424h=20=E5=86=85=E5=B7=B2?= =?UTF-8?q?=E5=90=88=E5=B9=B6=20auto-revert=20=E2=89=A53=20=E6=9A=82?= =?UTF-8?q?=E5=81=9C=E8=87=AA=E5=8A=A8=E5=9B=9E=E6=BB=9A=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E5=8D=87=20P0=EF=BC=88P2-6=20T3=EF=BC=8CADR-0041=EF=BC=8C.gith?= =?UTF-8?q?ub=20#91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 防'坏了合、合了 revert'振荡烧额度(卡内 T3 验收项);另:cloudbrid-agent App 已补装本仓与 CI-Workflows(#81 待办第 2 条闭环——post-merge 自动 revert 在治理仓 不再降级为仅告警)。 --- .github/workflows/post-merge-verify.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/post-merge-verify.yml b/.github/workflows/post-merge-verify.yml index 2403f3f..ce79404 100644 --- a/.github/workflows/post-merge-verify.yml +++ b/.github/workflows/post-merge-verify.yml @@ -71,6 +71,11 @@ jobs: RECENT=$(gh api "repos/$REPO/pulls?state=all&sort=created&direction=desc&per_page=20" \ --jq '[.[] | select(.title | test("\\[auto-revert\\]")) | select(.created_at > (now - 3600 | todateiso8601))] | length') echo "recent=$RECENT" >> "$GITHUB_OUTPUT" + # 闸 3(P2-6 T3 熔断,ADR-0041):24h 窗口内已合并的 [auto-revert] PR ≥ 3 + # → 暂停该仓自动回滚(防"坏了合、合了 revert"振荡烧额度),直接升级 P0 叫人 + RCNT=$(gh api "repos/$REPO/pulls?state=all&sort=updated&direction=desc&per_page=50" --jq '[.[] | select(.title | test("\[auto-revert\]")) | select(.merged_at != null) | select(.merged_at > (now - 86400 | todateiso8601))] | length') + echo "reverts_24h=$RCNT" >> "$GITHUB_OUTPUT" + echo "熔断检查:24h 内已合并 auto-revert = $RCNT(>=3 触发暂停)" - name: App 令牌(AG-1 身份——revert PR 的 gate 须能被触发;GITHUB_TOKEN 造的 PR 不触发工作流) id: app continue-on-error: true # App 未安装本仓时降级为仅告警(不静默——下方有判定) @@ -83,7 +88,7 @@ jobs: permission-contents: write permission-pull-requests: write - name: 自动 revert(REST revert 端点 + auto-merge) - if: steps.guard.outputs.nested != 'true' && steps.guard.outputs.recent == '0' && steps.app.outcome == 'success' + if: steps.guard.outputs.nested != 'true' && steps.guard.outputs.recent == '0' && steps.guard.outputs.reverts_24h < '3' && steps.app.outcome == 'success' env: GH_TOKEN: ${{ steps.app.outputs.token }} run: | @@ -100,13 +105,13 @@ jobs: echo "revert PR #$RESP 已建,enable auto-merge" gh pr merge "$RESP" --repo "$REPO" --auto --squash - name: 降级/兜底告警(revert 不可用或被闸拦) - if: failure() || steps.app.outcome != 'success' || steps.guard.outputs.nested == 'true' || steps.guard.outputs.recent != '0' + if: failure() || steps.app.outcome != 'success' || steps.guard.outputs.nested == 'true' || steps.guard.outputs.recent != '0' || steps.guard.outputs.reverts_24h >= '3' env: GH_TOKEN: ${{ github.token }} run: | gh issue create --repo "$REPO" \ --title "P0: post-merge 冒烟失败且自动 revert 未执行(run ${{ github.run_id }})" \ - --body "合并 ${SHA:0:8} 后冒烟失败。自动 revert 未执行的原因:App 令牌不可用(未安装本仓?)/ 防回环闸(嵌套 revert 或 1h 限频)/ 无关联 PR。人工复核并回滚:$RUN_URL(ADR-0041)" \ + --body "合并 ${SHA:0:8} 后冒烟失败。自动 revert 未执行的原因:App 令牌不可用(未安装本仓?)/ 防回环闸(嵌套 revert 或 1h 限频)/ 熔断(24h 已合并 revert >=3,暂停自动回滚防振荡)/ 无关联 PR。人工复核并回滚:$RUN_URL(ADR-0041)" \ --label P0 || \ gh issue create --repo "$REPO" \ --title "P0: post-merge 冒烟失败且自动 revert 未执行(run ${{ github.run_id }})" \