Mithril
123 天前
传统的 CI 考虑 TeamCity 就行,跟 TeamCity 比 Jenkins 坑真的多。
我 N 年前写的 TeamCity 插件现在还能用,但 Jenkins 就废了。这东西基本上锁死在你最初搭建的那个版本上。功能基本全靠一堆破插件,破插件之间还有互相依赖关系。等用一段时间你就发现,你想要一个功能,需要一个新插件。新插件需要新版本的 Jenkins ,但你要是更新 Jenkins ,你有个老插件的依赖插件就没法用了。导致你整个功能会挂掉。
Jenkins 属于成也开源败也开源的典型。让你深切体会到一个复杂系统管理失控是个什么结果。只做核心功能,其他交给社区没问题。但社区插件也能互相依赖的话,一个插件作者不维护了,所有依赖它的插件全都要挂掉。可能后续其他插件也能提供类似的功能。但 CI 这种东西一旦搭建起来几十几百个项目都带在上面,不更新还有 CVE ,一更新挂掉一半这谁受得了。
TeamCity 大部分功能都是自身就有的,插件依赖度比较低。该更新就更新,从来不会有问题。免费版 100 个配置 3 个 Agent 基本也够用了。
但说实话,最方便的还是现代 CI 那种配置文件+Docker 的。虽然配置麻烦一点,但一般一个项目也就配一次。