Prhub

#24577 Add bypass-fastfail label for check-stage-health

原始 PR 作者 hnyls2002 合并时间 2026-05-07 12:34 文件变更 1 提交数 2 评论 2 代码增减 +21 / -1

执行摘要

新增 bypass-fastfail 标签跳过 CI 跨作业失败检查

PR body 指出:需要跳过 check-stage-health 中的跨作业 fast-fail,当 PR 携带 bypass-fastfail 标签时,lint 检查不受影响。

简单实用的 CI 改进,值得合并。

讨论亮点

无 review 讨论。

实现拆解

  1. 在 .github/actions/check-stage-health/action.yml 的 description 中补充说明新增行为。
  2. 在 jobs-failed 检查之前,添加一段 JavaScript 代码,从 context.payload.pull_request.labels 或通过 API 查询关联 PR 的标签,若包含 bypass-fastfail 标签则直接 return,跳过后续的 jobs-failed 检查。
  3. 该跳过仅针对 jobs-failed 检查,lint 检查始终执行。
文件 模块 状态 重要度
.github/actions/check-stage-health/action.yml CI 动作 modified 4.23

关键源码片段

.github/actions/check-stage-health/action.yml infrastructure

唯一变更文件,核心实现修改在此。

# .github/actions/check-stage-health/action.yml (partial)# ... 前文:lint 检查部分 ...// Skip the jobs-failed check when the PR carries the bypass-fastfail label.
// Lint check above still runs.
let labels = [];
if (context.payload.pull_request?.labels) {
  labels = context.payload.pull_request.labels.map(l => l.name);
} else {
  const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
    owner: context.repo.owner,
    repo: context.repo.repo,
    commit_sha: ref,
  });
  if (prs.length > 0) {
    labels = prs[0].labels.map(l => l.name);
  }
}
if (labels.includes('bypass-fastfail')) {
  core.info('Skipping jobs-failed check (bypass-fastfail label present)');
  return;
}// 后续:jobs-failed 检查 ...

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:仅修改 CI 动作脚本,不涉及任何业务代码。可能导致 CI 忽略真正需要修复的失败,但标签存在于 PR 上,由开发者显式添加。

影响范围仅限于 check-stage-health 工作流。使用 bypass-fastfail 标签的 PR 将不再因其他作业失败而被终止,lint 仍会执行。有助于提升 CI 灵活性。

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论