fix(ci): treat skipped status as success in auto-approve check #1300

Merged
xiaoxia merged 1 commits from fix/auto-approve-skipped-status into develop 2026-08-08 12:44:03 +08:00
Owner

问题

scripts/ci/pr_auto_scan.pycheck_required_contexts 函数不把 skipped 视为通过。后端 PR 的 Frontend Lint 被 CI 跳过(skipped),自动审批认为 CI 没过 → 永不审批 → 永不合并。

修复

skipped 状态视为 success:

# 原:
if state != "success":
# 改为:
if state not in ("success", "skipped"):

约束

  • 只改 scripts/ci/pr_auto_scan.py 一个文件
  • 语法检查通过
## 问题 `scripts/ci/pr_auto_scan.py` 的 `check_required_contexts` 函数不把 `skipped` 视为通过。后端 PR 的 Frontend Lint 被 CI 跳过(skipped),自动审批认为 CI 没过 → 永不审批 → 永不合并。 ## 修复 将 `skipped` 状态视为 success: ```python # 原: if state != "success": # 改为: if state not in ("success", "skipped"): ``` ## 约束 - 只改 `scripts/ci/pr_auto_scan.py` 一个文件 - 语法检查通过
xiaoxia added 1 commit 2026-08-08 12:31:14 +08:00
fix(ci): treat skipped status as success in auto-approve check
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 / Check if frontend-only change (pull_request) Successful in 1m50s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m5s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m11s
AI Code Review / AI Code Review (pull_request) Successful in 2m55s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m39s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (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
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m20s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m38s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m11s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m19s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 6m16s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m6s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 9s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 37s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 47s
20d7e02a75
When a backend PR does not touch frontend files, Frontend Lint
is skipped. The auto-approve scanner treated skipped as not-success,
causing the PR to never be auto-approved or merged.

Fix: check_required_contexts now accepts both success and skipped.
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:1 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [scripts/ci/pr_auto_scan.py:78] 状态值有效性确认
    • 具体内容:GitHub Statuses API 的标准状态字段通常仅包含 pendingsuccessfailureerror,并不包含 skipped。如果该脚本依赖的是标准的 GitHub Statuses API,state 可能永远不会等于 "skipped",此修改可能无效。请确认 statuses 字典的数据来源是否包含自定义的 "skipped" 状态,或者是否混淆了 Checks API 的 conclusion 字段。

良好实践

  • 代码修改简洁明了,意图清晰。
  • 使用 in ("success", "skipped") 的元组判断方式,比多重 or 判断更具可读性。
  • 保留了 state == "pending" 的独立判断逻辑,确保了 any_pending 标志的正确性。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-08 04:34:13 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[scripts/ci/pr_auto_scan.py:78] 状态值有效性确认** - 具体内容:GitHub Statuses API 的标准状态字段通常仅包含 `pending`、`success`、`failure`、`error`,并不包含 `skipped`。如果该脚本依赖的是标准的 GitHub Statuses API,`state` 可能永远不会等于 `"skipped"`,此修改可能无效。请确认 `statuses` 字典的数据来源是否包含自定义的 `"skipped"` 状态,或者是否混淆了 Checks API 的 `conclusion` 字段。 ### ✅ 良好实践 - 代码修改简洁明了,意图清晰。 - 使用 `in ("success", "skipped")` 的元组判断方式,比多重 `or` 判断更具可读性。 - 保留了 `state == "pending"` 的独立判断逻辑,确保了 `any_pending` 标志的正确性。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-08 04:34:13 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

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

🗑️ 预览环境已清理

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

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

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