fix(ci): auto-merge去掉审批检查 + auto-approve超时延至40分钟 #713

Merged
xiaoxia merged 1 commits from fix/auto-merge-no-approval-needed into develop 2026-07-22 14:53:42 +08:00
Owner

问题

  1. auto-merge 多余限制:分支保护 required_approvals=0(不要求审批),但 auto-merge 脚本要求必须有审批才能合并,导致 CI 全绿但没审批的 PR 无法自动合并(如 #705)。
  2. auto-approve 超时太短:20分钟内CI跑不完就超时退出,PR得不到自动审批。

修复

  1. auto-merge 去掉审批检查:分支保护不要求审批,脚本也不再检查,CI全绿直接合。
  2. auto-approve 超时 20→40分钟:给CI更多时间跑完门禁。

影响

  • CI全绿的PR会更快自动合并,不再因为缺审批卡住
  • CI繁忙时也能等到自动审批
## 问题 1. **auto-merge 多余限制**:分支保护 `required_approvals=0`(不要求审批),但 auto-merge 脚本要求必须有审批才能合并,导致 CI 全绿但没审批的 PR 无法自动合并(如 #705)。 2. **auto-approve 超时太短**:20分钟内CI跑不完就超时退出,PR得不到自动审批。 ## 修复 1. **auto-merge 去掉审批检查**:分支保护不要求审批,脚本也不再检查,CI全绿直接合。 2. **auto-approve 超时 20→40分钟**:给CI更多时间跑完门禁。 ## 影响 - CI全绿的PR会更快自动合并,不再因为缺审批卡住 - CI繁忙时也能等到自动审批
xiaoxia added 1 commit 2026-07-22 14:21:50 +08:00
fix(ci): auto-merge去掉审批检查(required_approvals=0无需审批)+ auto-approve超时延至40分钟
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 25s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 33s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 37s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m7s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 56s
AI Code Review / AI Code Review (pull_request) Successful in 3m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 8m17s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m59s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 29m9s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 30s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
26250a74a9
auto-approve-bot approved these changes 2026-07-22 14:33:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-22 14:33:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

项目 详情
PR号 #713
预览链接 https://pr-713.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #713 | | 预览链接 | [https://pr-713.preview.xiaoxiajianji.com](https://pr-713.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

📊 审查概览

  • 整体评价:需修改
  • 严重问题数量:1 个
  • 一般建议数量:1 个

需修改的问题(严重)

  1. [.gitea/workflows/pr-automation.yml: 281-291] 移除审批检查逻辑存在安全风险
    • 问题描述:代码删除了调用 check_pr_approval.py 的逻辑以及合并条件中对 HAS_APPROVAL 的校验,仅依赖注释说明“分支保护required_approvals=0”。如果仓库的分支保护设置后续被修改为需要审批,此自动化脚本将直接合并 PR,导致绕过代码审查流程,存在严重的安全隐患。
    • 修改建议:建议保留审批检查逻辑,或者通过 Gitea API 动态获取当前分支的 required_approvals 配置值,不要在代码中硬编码假设配置状态。

💡 改进建议(一般)

  1. [.gitea/workflows/pr-automation.yml: 75] 轮询超时实现方式建议优化
    • 具体内容:当前使用 for attempt in $(seq 1 240) 配合 sleep 10 来控制 40 分钟超时。这种方式计算不够精确(忽略了循环体本身的执行耗时),且修改时长需要同时修改两个地方(循环次数和日志文案)。建议使用 timeout 40m bash -c '...' 命令包裹轮询逻辑,或者在循环外计算截止时间戳 end_time=$(date +%s --date='+40 minutes') 并在循环内比对,逻辑更严谨且易于维护。

良好实践

  • 适当延长了 CI 轮询超时时间(20分钟 -> 40分钟),以适应可能较长的构建任务,体现了运维的灵活性。
  • 同步更新了日志输出文本,确保提示信息与实际逻辑一致。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 14:36:14 | 模型:

### 📊 审查概览 - 整体评价:需修改 - 严重问题数量:1 个 - 一般建议数量:1 个 ### ❌ 需修改的问题(严重) 1. **[.gitea/workflows/pr-automation.yml: 281-291] 移除审批检查逻辑存在安全风险** - 问题描述:代码删除了调用 `check_pr_approval.py` 的逻辑以及合并条件中对 `HAS_APPROVAL` 的校验,仅依赖注释说明“分支保护required_approvals=0”。如果仓库的分支保护设置后续被修改为需要审批,此自动化脚本将直接合并 PR,导致绕过代码审查流程,存在严重的安全隐患。 - 修改建议:建议保留审批检查逻辑,或者通过 Gitea API 动态获取当前分支的 `required_approvals` 配置值,不要在代码中硬编码假设配置状态。 ### 💡 改进建议(一般) 1. **[.gitea/workflows/pr-automation.yml: 75] 轮询超时实现方式建议优化** - 具体内容:当前使用 `for attempt in $(seq 1 240)` 配合 `sleep 10` 来控制 40 分钟超时。这种方式计算不够精确(忽略了循环体本身的执行耗时),且修改时长需要同时修改两个地方(循环次数和日志文案)。建议使用 `timeout 40m bash -c '...'` 命令包裹轮询逻辑,或者在循环外计算截止时间戳 `end_time=$(date +%s --date='+40 minutes')` 并在循环内比对,逻辑更严谨且易于维护。 ### ✅ 良好实践 - 适当延长了 CI 轮询超时时间(20分钟 -> 40分钟),以适应可能较长的构建任务,体现了运维的灵活性。 - 同步更新了日志输出文本,确保提示信息与实际逻辑一致。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 14:36:14 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 21ae1c627f into develop 2026-07-22 14:53:42 +08:00

🗑️ 预览环境已清理

PR #713 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #713 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.