文章深入剖析了四种「假绿」CI 故障:job 超时设置互相抵消、CRLF 处理不一致、注释被误判为配置、报告把本地笔记本计为高价值线索。提供了系统性排查此类问题的思路。
损坏的 CI 检查会大声喧哗:流水线变红,有人来查看。而盲目的检查则是沉默的——沉默在外观上和成功毫无二致。
我们在一个代码库里,一天之内发现了四个。全都绿色通过:
一个 GitHub Actions lint 任务,timeout-minutes: 15,内部却是 --timeout=15m。工具的超时永远无法触发——任务先死了,GitHub 写上 cancelled,却不写原因。它让我们的部署停滞了一整天。
一个行尾符修复从未到达已有机器。.gitattributes 在检出时生效:1455 个文件中有 1230 个仍是 CRLF,而 git status 显示 clean。
一个守卫把自己的注释标了出来,因为它把正文扫描成了配置。
一个注册报告把我们的笔记本电脑算作了"高购买意向"线索。
代码没有腐烂。地基在它下面移动了:一个 runner、一个旧 worktree、一条注释、一个生成的域名。
发现这四个问题的关键问题是:这条检查上次说"不"是什么时候?"一切正常"和"我什么都看不见"在每个仪表盘上看起来完全一样——而它们之中只有一个是真的。
完整版本,附带四篇事后分析:https://dev.to/heinrichneb/one-repo-one-day-4-ci-guards-that-were-green-and-blind-oge
我做了 cachly——面向 AI 编程助手的持久化记忆,基于 MCP。你的助手每天早上重新读取你的代码库。其实不必如此。免费层级,欧盟托管:cachly.dev

我们是一个让程序员分享、保持最新和成长职业的地方。