[moz] fix(ci): lint/test venv 钉死 /usr/bin/python3(3.9.6),根因 brew python@3.14 tokenize 漂移致 E122 假阳性 #134

Merged
pangtong-fujunshi merged 2 commits from ci/pin-flake8 into main 2026-09-10 21:39:38 +00:00
Member

根因

ci.yml lint 步骤 pip install flake8 未锁版本,runner 每次装最新版。2026-09-11 新版 pycodestyle 对 main 现存代码(src/api/toolchain_routes.py:1217)报 E122——该代码 2026-06-23 后未改动、06-25 CI 绿,纯工具版本漂移。main 全量 lint 现已必红,阻塞所有 PR(含挂起 9 天的 #131)。

证据链

时间 事件
06-23 toolchain_routes.py 最后改动(35959e1)
06-25 同代码 CI lint 绿(PR #126)
09-02 PR #131 CI 死于 checkout(代理问题,09-03 已修,另一层根因)
09-11 rerun checkout 走通,lint 报 1217:21: E122;本地 flake8 7.3.0 (pycodestyle 2.14.0) 对 origin/main 全量 src/ 同款命令 零报错 exit=0

处置

flake8==7.3.0(本地全量实证绿),版本策略写入行内注释。纯 CI 配置变更,不碰业务代码。

交付检查

  • docs/design:无需更新——设计文档未规定 flake8 版本策略,ci.yml 注释即现行说明
  • tests:无需更新——纯 CI 配置,本 PR 自身 CI 即验证

后续

合入后需将 main 合回 incident/daemon-stall-report 分支,PR #131 方可转绿进入 review。

## 根因 ci.yml lint 步骤 `pip install flake8` **未锁版本**,runner 每次装最新版。2026-09-11 新版 pycodestyle 对 main 现存代码(`src/api/toolchain_routes.py:1217`)报 E122——该代码 2026-06-23 后未改动、06-25 CI 绿,纯工具版本漂移。**main 全量 lint 现已必红,阻塞所有 PR**(含挂起 9 天的 #131)。 ## 证据链 | 时间 | 事件 | |------|------| | 06-23 | toolchain_routes.py 最后改动(35959e1) | | 06-25 | 同代码 CI lint 绿(PR #126) | | 09-02 | PR #131 CI 死于 checkout(代理问题,09-03 已修,另一层根因) | | 09-11 | rerun checkout 走通,lint 报 `1217:21: E122`;本地 flake8 7.3.0 (pycodestyle 2.14.0) 对 origin/main 全量 `src/` 同款命令 **零报错 exit=0** | ## 处置 锁 `flake8==7.3.0`(本地全量实证绿),版本策略写入行内注释。纯 CI 配置变更,不碰业务代码。 ## 交付检查 - docs/design:**无需更新**——设计文档未规定 flake8 版本策略,ci.yml 注释即现行说明 - tests:**无需更新**——纯 CI 配置,本 PR 自身 CI 即验证 ## 后续 合入后需将 main 合回 `incident/daemon-stall-report` 分支,PR #131 方可转绿进入 review。
jiangwei-infra added 1 commit 2026-09-10 21:20:19 +00:00
[moz] ci(lint): 锁定 flake8==7.3.0,修复版本漂移致 E122 全线误报
CI / lint (pull_request) Failing after 18s
CI / test (pull_request) Has been skipped
CI / frontend (pull_request) Has been skipped
CI / notify-on-failure (pull_request) Successful in 10s
19a76e25d6
根因:ci.yml lint 步骤 pip install flake8 未锁版本,runner 每次装最新版。
2026-09-11 新版 pycodestyle 对 main 现存代码(toolchain_routes.py:1217)报
E122,而该代码 2026-06-23 后未改动、06-25 CI 绿——纯工具版本漂移,main
全量 lint 现已必红,阻塞所有 PR(含挂起 9 天的 #131)。

证据:本地 flake8 7.3.0 (pycodestyle 2.14.0) 对 origin/main 全量 src/
零报错(exit=0);CI 同款命令最新版报 1217:21 E122。

处置:锁定 7.3.0(实证绿版本),版本策略写入 ci.yml 行内注释。
纯 CI 配置变更,不碰业务代码。

交付检查:
- docs/design:无需更新(设计文档未规定 flake8 版本策略,ci.yml 注释即现行说明)
- tests:无需更新(纯 CI 配置,本 PR 自身 CI 即验证)
jiangwei-infra requested review from pangtong-fujunshi 2026-09-10 21:20:43 +00:00
jiangwei-infra requested review from simayi-challenger 2026-09-10 21:20:45 +00:00

[CI] 失败

分支: 134
触发 commit: 19a76e25d64ca684877de844b7050562cc6115f4
失败 Job: lint
请检查 CI 日志并修复。

[CI] 失败 分支: 134 触发 commit: `19a76e25d64ca684877de844b7050562cc6115f4` 失败 Job: lint 请检查 CI 日志并修复。
jiangwei-infra added 1 commit 2026-09-10 21:32:58 +00:00
[moz] ci: venv 解释器钉 /usr/bin/python3(3.9.6)——真因是 3.14 tokenize 行为变化
CI / lint (pull_request) Successful in 19s
CI / test (pull_request) Successful in 27s
CI / frontend (pull_request) Successful in 27s
CI / notify-on-failure (pull_request) Successful in 1s
96d6926272
修正 19a76e2 的错误归因:flake8/pycodestyle 版本无漂移(CI venv 与
本地用户站完全同版 7.3.0/2.14.0,已对拍排除)。真正差异是解释器:
- runner PATH 首位 /opt/homebrew/bin(7-5 起 python3→3.14.6)
- Python 3.12+ 重写 tokenize,pycodestyle E122 判定翻转
- 同一 toolchain_routes.py:1217:3.9 零报错 / 3.14 报 E122(实证)
- 6-25 绿色基线的 CI venv 是 python3.9(6月任务日志实证)
- 另:pydantic<2 无 3.14 wheel,test job 在 3.14 下必挂

本地预验证(/usr/bin/python3 3.9.6,CI 同款命令):
- lint: flake8 7.3.0 全量 src/ exit=0 零报错(两轮)
- test: 同款依赖 503 passed / 9 skipped / 0 failed

交付检查:docs/design 无需更新(环境策略写入 ci.yml 注释);tests
无需更新(本提交含全量预验证)。
pangtong-fujunshi changed title from [moz] ci(lint): 锁定 flake8==7.3.0,修复版本漂移致 E122 全线误报 to [moz] fix(ci): lint/test venv 钉死 /usr/bin/python3(3.9.6),根因 brew python@3.14 tokenize 漂移致 E122 假阳性 2026-09-10 21:39:30 +00:00
pangtong-fujunshi merged commit c22269497a into main 2026-09-10 21:39:38 +00:00
pangtong-fujunshi deleted branch ci/pin-flake8 2026-09-10 21:39:39 +00:00
Sign in to join this conversation.