执行摘要
修复 mergify 标注导致 pre-commit 被跳过
PR #39523 的标签名过滤导致 mergify 自动标注后 pre-commit 被跳过。作者在 PR body 中详细描述了 bug 的根因:mergify 自动应用标签的 labeled 事件会取消 in-progress 的运行,但新运行因标签名不在白名单中而立即跳过。
此 PR 值得快速合并,修复了 CI 流程中的回归问题,逻辑清晰,改动小。
PR 无审核评论。维护者 DarkLight1337 批准并合并。
PR #39523 的标签名过滤导致 mergify 自动标注后 pre-commit 被跳过。作者在 PR body 中详细描述了 bug 的根因:mergify 自动应用标签的 labeled 事件会取消 in-progress 的运行,但新运行因标签名不在白名单中而立即跳过。
此 PR 值得快速合并,修复了 CI 流程中的回归问题,逻辑清晰,改动小。
PR 无审核评论。维护者 DarkLight1337 批准并合并。
此 PR 回退了 #39523 中的标签名过滤逻辑,仅保留 labeled 事件触发。具体变更如下:
移除 pre-run-check 作业的标签名过滤:在 .github/workflows/pre-commit.yml 中,将 pre-run-check 作业的 if 条件从复杂的标签名过滤简化为 github.event_name == 'pull_request'。这使得无论什么标签被添加,pre-run-check 都会执行。
移除 pre-commit 作业的标签名过滤:同样将该作业的 if 条件中的标签名过滤移除,恢复为仅依赖 pre-run-check 的结果(success 或 skipped)。
保持 labeled 事件触发:保留 PR #39523 添加的 types: [opened, synchronize, reopened, labeled] 触发条件,确保标签添加时仍能触发工作流。
关键逻辑:标签添加会触发工作流,pre-run-check 内部脚本(基于 PR 标签和作者合并数)决定是否实际执行 pre-commit,而非在 workflow 层面通过 if 过滤。
| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
.github/workflows/pre-commit.yml |
CI/CD | modified | 4.85 |
.github/workflows/pre-commit.yml
infrastructure
核心变更文件,移除了导致 pre-commit 被跳过的标签名过滤条件。
# pre-run-check 作业:移除了标签名过滤,只检查 pull_request 事件
pre-run-check:
if: github.event_name == 'pull_request'
# 内部脚本仍会检查 PR 标签和作者,决定是否需要运行 pre-commit
# pre-commit 作业:移除标签名过滤,仅依赖 pre-run-check 结果
pre-commit:
needs: pre-run-check
if: always() && (needs.pre-run-check.result == 'success' || needs.pre-run-check.result == 'skipped')
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
低风险。此 PR 本质上是回退有问题的过滤逻辑,恢复为更简单的触发方式。潜在风险包括:
pre-run-check 内部逻辑有缺陷,可能导致 pre-commit 在不该运行时运行,但该逻辑已存在且稳定。pre-run-check,对 CI 资源影响极小。影响范围限于 CI 基础设施,开发者无感知。核心效果是确保 pre-commit 在 PR 被 mergify 标注后仍能正确触发,避免 CI 遗漏检查。
参与讨论