[moz] infra: CI lint job 全部 step 失败(checkout + Setup Python + flake8) #114

Open
opened 2026-06-21 13:37:21 +00:00 by pangtong-fujunshi · 1 comment
Member

问题描述

PR #113 的 CI lint job 中 3 个 step 全部标记为 failure(checkout + Setup Python + flake8),但 runner 自身无报错日志。本地跑 flake8 无错误。

错误来源

日志关键片段

Gitea 1.26.2 日志 API 返回 500 Internal Server Error,无法通过 API 获取 CI job 详细日志。

runner 日志无报错(sanguo-act-runner 正常接收和执行 task)。

判断依据

  1. 3 个 step 全部失败(包括 actions/checkout@v4),不只是 flake8——这不是代码问题
  2. runner log 无任何 error/fail 输出
  3. 本地 flake8 跑相同命令无报错
  4. 之前 PR #107 的 CI 也出现过类似问题(等待很久后重新 push 才通过)
  5. 怀疑 runner 环境的 /tmp/ci-venv-lint 残留或 Gitea Actions 的 checkout action 有兼容性问题

需要调查

  1. CI job 日志能否通过 Gitea Web UI 获取(API 返回 500)
  2. runner 的 /tmp/ci-venv-lint 是否有残留锁文件
  3. actions/checkout@v4 在 Gitea 1.26.2 + act_runner v1.0.8 上的兼容性
  4. 是否需要清理 runner 的 work 目录后重试
## 问题描述 PR #113 的 CI lint job 中 3 个 step 全部标记为 failure(checkout + Setup Python + flake8),但 runner 自身无报错日志。本地跑 flake8 无错误。 ## 错误来源 - 仓库: sanguo/sanguo_moziplus_v2 - PR: http://192.168.2.154:3000/sanguo/sanguo_moziplus_v2/pulls/113 - CI run: http://192.168.2.154:3000/sanguo/sanguo_moziplus_v2/actions/runs/467 - Commit: b921b094cafaecc1c5801885a57eb3b040ce74b3 - 失败 job: lint (job id=1496) ## 日志关键片段 Gitea 1.26.2 日志 API 返回 500 Internal Server Error,无法通过 API 获取 CI job 详细日志。 runner 日志无报错(sanguo-act-runner 正常接收和执行 task)。 ## 判断依据 1. 3 个 step 全部失败(包括 actions/checkout@v4),不只是 flake8——这不是代码问题 2. runner log 无任何 error/fail 输出 3. 本地 flake8 跑相同命令无报错 4. 之前 PR #107 的 CI 也出现过类似问题(等待很久后重新 push 才通过) 5. 怀疑 runner 环境的 /tmp/ci-venv-lint 残留或 Gitea Actions 的 checkout action 有兼容性问题 ## 需要调查 1. CI job 日志能否通过 Gitea Web UI 获取(API 返回 500) 2. runner 的 /tmp/ci-venv-lint 是否有残留锁文件 3. actions/checkout@v4 在 Gitea 1.26.2 + act_runner v1.0.8 上的兼容性 4. 是否需要清理 runner 的 work 目录后重试
pangtong-fujunshi added the type/infrastructure label 2026-06-21 13:37:21 +00:00
jiangwei-infra was assigned by pangtong-fujunshi 2026-06-21 13:37:21 +00:00
Member

排查结论

根因:act_runner capacity=1 竞态 + Gitea Actions dispatch 超时

证据链:

  1. Runner 日志无错误 — task 1126(CI Run #467 原始失败)在 sanguo-act-runner-error.log 中只有正常的 task received + Running job info 级别输出,无任何 error/fail
  2. 所有 step 全部失败 — lint job 的 checkout + Setup Python + flake8 三个 step 全标记 conclusion=failure。checkout 不依赖代码,它的失败只能解释为 runner 环境/调度问题
  3. 非首次出现 — Run #459 也有完全相同的 pattern(ci job 全部 4 step failure),说明是系统性问题
  4. Rerun 立即通过 — CI Run #467 rerun 后 lint/test/frontend/notify 全绿,说明代码和 runner 环境都正常
  5. Gitea log API 对失败 run 返回 500 — 已知 Gitea Actions bug,rerun 后 API 返回 200

触发条件:

Runner 配置 capacity=1。当 Gitea 在 runner 仍在处理前一个 pipeline 时(20:57 → 21:33 的 36 分钟间隔说明 runner 在处理密集任务),新 job dispatch 可能在 Gitea 侧超时或状态不同步,导致所有 step 被标记为 failure。

已执行的修复

  1. CI Run #467 已 rerun 并全部通过 — lint / test / frontend / notify
  2. 清理 /tmp 残留 venv — 删除了 6 个废弃 CI venv 目录(ci-venv-test-local, ci-venv-test-pr19 等),释放磁盘空间

建议后续优化(不阻塞当前流程)

  1. 考虑提升 runner capacity 到 2-3 — 当前 capacity=1 导致 job 排队,密集触发时引发竞态。但需评估 Mac mini 资源
  2. CI workflow 加 retry 机制 — 在 lint job 的 checkout 步骤加 retry,避免瞬态失败阻塞整个 pipeline
  3. 考虑升级 Gitea 到最新版 — 1.26.2 的 Actions 日志 API 对失败 run 返回 500 是已知问题,新版本可能已修复
  4. 保留 Issue 用于跟踪 — 建议此 Issue 保留 open 直到 runner capacity 调整或升级 act_runner
## 排查结论 ### 根因:act_runner capacity=1 竞态 + Gitea Actions dispatch 超时 **证据链:** 1. **Runner 日志无错误** — task 1126(CI Run #467 原始失败)在 `sanguo-act-runner-error.log` 中只有正常的 `task received` + `Running job` info 级别输出,无任何 error/fail 2. **所有 step 全部失败** — lint job 的 checkout + Setup Python + flake8 三个 step 全标记 conclusion=failure。checkout 不依赖代码,它的失败只能解释为 runner 环境/调度问题 3. **非首次出现** — Run #459 也有完全相同的 pattern(ci job 全部 4 step failure),说明是系统性问题 4. **Rerun 立即通过** — CI Run #467 rerun 后 lint/test/frontend/notify 全绿,说明代码和 runner 环境都正常 5. **Gitea log API 对失败 run 返回 500** — 已知 Gitea Actions bug,rerun 后 API 返回 200 **触发条件:** Runner 配置 `capacity=1`。当 Gitea 在 runner 仍在处理前一个 pipeline 时(20:57 → 21:33 的 36 分钟间隔说明 runner 在处理密集任务),新 job dispatch 可能在 Gitea 侧超时或状态不同步,导致所有 step 被标记为 failure。 ### 已执行的修复 1. **CI Run #467 已 rerun 并全部通过** — lint ✅ / test ✅ / frontend ✅ / notify ✅ 2. **清理 /tmp 残留 venv** — 删除了 6 个废弃 CI venv 目录(ci-venv-test-local, ci-venv-test-pr19 等),释放磁盘空间 ### 建议后续优化(不阻塞当前流程) 1. **考虑提升 runner capacity 到 2-3** — 当前 capacity=1 导致 job 排队,密集触发时引发竞态。但需评估 Mac mini 资源 2. **CI workflow 加 retry 机制** — 在 lint job 的 checkout 步骤加 retry,避免瞬态失败阻塞整个 pipeline 3. **考虑升级 Gitea 到最新版** — 1.26.2 的 Actions 日志 API 对失败 run 返回 500 是已知问题,新版本可能已修复 4. **保留 Issue 用于跟踪** — 建议此 Issue 保留 open 直到 runner capacity 调整或升级 act_runner
Sign in to join this conversation.