cidx是一个用Go编写的声明式CI/CD运行器,可在本地和CI中运行同一份流水线定义。在v3.0.0发布过程中,开发者发现了一个令人震惊的事实:一个公开的Docker镜像中根本没有二进制文件,但CI每次都能通过,从未报错。
问题出在构建环节。.dockerignore文件将bin/目录排除在构建上下文之外,而Dockerfile却执行了COPY bin/cidx /usr/local/bin/cidx。结果,kaniko在构建上下文中找不到任何匹配文件,但并未报错,而是生成一个指向不存在文件的镜像。流水线依然显示绿色,镜像正常发布,直到运行时才会暴露出缺失问题。
作者指出,没有测试或代码审查能够发现这个问题,因为每一步在表面上看都是正常的。这正是v3.0.0五个破坏性变更的缩影:每一个变更都移除了一个看似有效、但实际上从未正常工作的功能。
目前披露的典型问题包括三个。第一个是local_behavior = "no-push",文档宣称该模式会验证Docker构建但不推送,实际代码却将其等效于dry-run模式,命令从未交给后端,根本没有构建发生。第二个是[branch]下的auto_cleanup配置项,它被解析、被接受、被写进文档,但没有任何代码读取它。第三个问题是未知的cidx.toml键:一个拼写错误与合法设置无法区分,cidx validate仍会显示配置有效,导致默认值被静默保留。
该项目在七天内完成了70次提交,关闭了55个issue。作者表示,五个破坏性变更都讲述着同一个故事:有些功能只是看起来能用,实际上从未起作用。新版本将它们彻底移除。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.