# PR #24577 完整报告

- 仓库：`sgl-project/sglang`
- 标题：Add bypass-fastfail label for check-stage-health
- 合并时间：2026-05-07 12:34
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/24577

---

# 执行摘要

- 一句话：新增 bypass-fastfail 标签跳过 CI 跨作业失败检查
- 推荐动作：简单实用的 CI 改进，值得合并。

# 功能与动机

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

# 实现拆解

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 动作；类别 infra；类型 infrastructure）: 唯一变更文件，核心实现修改在此。

关键符号：未识别

## 关键源码片段

### `.github/actions/check-stage-health/action.yml`

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

```yaml
# .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 检查 ...

```

# 评论区精华

无 review 讨论。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低：仅修改 CI 动作脚本，不涉及任何业务代码。可能导致 CI 忽略真正需要修复的失败，但标签存在于 PR 上，由开发者显式添加。
- 影响：影响范围仅限于 check-stage-health 工作流。使用 bypass-fastfail 标签的 PR 将不再因其他作业失败而被终止，lint 仍会执行。有助于提升 CI 灵活性。
- 风险标记：暂无

# 关联脉络

- 暂无明显关联 PR