6个月,17款CI/CD(持续集成/持续部署)工具,400+次流水线执行。我把结果塞进一张Excel,发给CTO时他回了三个字:"发群里。"
这事得从2023年Q4说起。我们团队当时用Jenkins(开源自动化服务器)跑了3年,节点挂了没人管,插件版本锁死不敢升级,一次发布能卡2小时。我提议换工具,技术总监说:"你测,测完给我数据。"
于是有了这份魔鬼清单:GitHub Actions、GitLab CI、CircleCI、Travis CI、Azure DevOps、Jenkins、TeamCity、Bamboo、Drone、Buildkite、Semaphore、Codefresh、Harness、Spacelift、GitHub Enterprise、GitLab Self-Managed、Bitbucket Pipelines。
测试标准很朴素:同等代码库、同等并发量、同等失败场景。记录启动时间、缓存命中率、调试成本、账单金额。没有"感觉不错",只有"第几次提交修复了这个问题"。
第一轮:云原生工具集体翻车
CircleCI和Travis CI曾经是我的白月光。2018年它们代表"现代化",YAML配置比Jenkins的Groovy(一种JVM语言)清爽十倍。
但2024年的测试暴露一个尴尬事实:它们的缓存策略停留在2019年。Node_modules(Node.js依赖目录)缓存命中率不到40%,每次构建重新下载3.2GB依赖。CircleCI的定价模型更离谱——并发任务按分钟计费,团队扩容时账单呈指数增长。
Travis CI的问题更隐蔽。2020年被收购后核心团队流失,文档更新停留在2022年。我遇到一个Docker(容器化平台)镜像拉取失败的bug,GitHub Issue(问题追踪)里有人2021年提过,至今open状态。
Codefresh和Harness倒是功能齐全,但学习曲线陡峭到荒谬。Harness的"流水线即代码"需要掌握YAML、Go模板、以及它们自研的表达式语言。我花了4小时才跑通一个三步骤的构建流程,期间文档链接404了两次。
Semaphore和Buildkite表现中规中矩,但有一个共同硬伤:生态系统。GitHub Marketplace(应用市场)有1.2万个Actions,Semaphore的插件库不到200个。遇到边缘需求时,你得自己写脚本。
第二轮:自托管方案的自我欺骗
Jenkins、GitLab Self-Managed、TeamCity、Bamboo——这些"可控"的工具,测完让我对"可控"二字产生了怀疑。
Jenkins的插件地狱名不虚传。为了支持Node.js 20,我升级了NodeJS插件,结果破坏了Pipeline(流水线)插件的兼容性。回滚后构建历史丢失,因为备份脚本依赖那个被回滚的插件版本。
GitLab Self-Managed的硬件成本被严重低估。官方推荐4核8G起步,实际跑起来8核16G才勉强不卡。Runner(执行代理)的并发配置藏在三层菜单里,文档写的"调优指南"其实是"祈祷指南"。
TeamCity和Bamboo的问题更简单:它们正在被放弃。JetBrains(TeamCity母公司)2023年财报里CI/CD收入占比3%,Bamboo的最后一次大版本更新是2021年。选它们等于给自己埋技术债。
Drone和Spacelift属于细分场景工具。Drone轻量但功能残缺,Spacelift专注Terraform(基础设施即代码工具)但价格按资源计费,一个小团队的月度账单能买两台MacBook Pro。
第三轮:GitHub Actions的"作弊"设计
GitHub Actions赢在哪?我拆解了那张让CTO沉默的表格,发现三个被低估的设计。
第一,缓存的"作弊级"实现。 actions/cache(官方缓存动作)默认用GitHub的分布式存储,命中时下载速度拉满。更隐蔽的是它的"复用策略"——同一仓库的PR(拉取请求)构建可以读取主分支缓存,而CircleCI需要手动配置跨分支规则。我的测试里,GitHub Actions的Node_modules缓存命中率91%,构建时间从14分钟压到3分20秒。
第二,调试成本的指数级降低。 流水线失败时,GitHub Actions允许直接SSH(安全外壳协议)进Runner实例,或者重启用调试日志。Jenkins的调试?看日志、猜状态、本地复现、再提交触发。我统计了修复一个典型构建错误的平均时间:GitHub Actions 12分钟,Jenkins 47分钟。
第三,定价的"幻觉"与真实。 GitHub Actions的账单看起来贵——$0.008/分钟,Linux大型Runner $0.032/分钟。但我的实际测算显示,同等并发量下它比CircleCI便宜23%,因为缓存省下来的时间直接折算成费用。更关键的是,团队已经在为GitHub付费,Actions是"附赠"的边际成本。
GitLab CI是唯一的接近对手。它的CI/CD和代码托管深度集成,缓存策略同样成熟,自托管Runner的稳定性甚至略胜GitHub。但GitLab的UX(用户体验)设计停留在2010年代——查看流水线日志需要跳转三次页面,变量配置的界面像数据库管理工具。
那张表格的最后一行
我把17款工具按五个维度打分:启动速度、缓存效率、调试体验、生态丰富度、总拥有成本。GitHub Actions四项第一,一项第二。GitLab CI总分第二,但差距明显。
表格底部有一行备注,是我测完第6个月加的:"以上结论基于2024年Q1-Q2的版本状态。CI/CD工具的市场格局变化极快,建议每12个月重新评估。"
CTO把表格发群里后,第二天有同事私信我:"我们三年前就该测这个。"我回他:"三年前GitHub Actions的缓存还没这么稳,Jenkins的插件也没这么崩。时机也是变量。"
现在那张Excel还在我电脑里,第18行空着,备注栏写着:"待测:Dagger(声明式CI/CD工具)、Wolfi(无发行版容器)、以及GitHub Actions的竞争对手会不会抄作业。"
你现在的CI/CD工具是哪款?最近一次构建失败,花了多久定位原因?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.