fix(ci): auto-approve轮询等待所有CI跑完再判断结果 #481
Reference in New Issue
Block a user
Delete Branch "fix/auto-approve-polling-bug"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
auto-approve工作流轮询CI状态时,只要看到任何一个check是failure状态就直接exit 0退出。但此时新的CI可能还在pending运行中,旧的failure是上一次commit的残留状态,导致auto-approve不会等待新CI跑完自动审批。
修复
新增ANY_PENDING判断:
影响范围
仅修改
.gitea/workflows/auto-approve.yml轮询逻辑,不影响CI流水线本身。CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #481
⚠️ 问题(0个需要修改)
无
💡 建议(2个可选)
[.gitea/workflows/auto-approve.yml:81] 状态判断的完备性
pending和null状态的判断,这很好。但建议确认上游 CI 系统是否还会返回其他非成功状态(如cancelled、skipped或action_required)。如果STATE为这些值,当前逻辑会跳过ANY_PENDING和ANY_FAILED的判断,直接进入末尾的sleep 10。如果ALL_SUCCESS的逻辑不够严谨(例如仅在failure时置 false),可能会导致这些非成功状态被误判为成功从而触发自动审批。建议确保ALL_SUCCESS的判断逻辑覆盖了所有非预期状态。[.gitea/workflows/auto-approve.yml:81] 空值处理
[ "$STATE" = "null" ],这通常适用于 API 返回 JSON 字符串 "null" 的情况。建议同时检查变量是否为空字符串[ -z "$STATE" ],以防止因解析错误或字段缺失导致的空值被跳过,从而避免潜在的逻辑漏洞。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-07-17 18:29:20 | 模型: