做了个 Mac 小工具 Pipeline Lens ,在本地模拟 GitLab CI pipeline 。
项目稍微大一点,.gitlab-ci.yml 就会拆成一堆 include ,再加上 rules 、needs 、extends 、!reference ,改 CI 配置的时候心里很没底。MR 自己的 pipeline 推上去跑一遍就知道了,问题是它只验证 MR 自己:合进去之后 main 、release 分支、tag 上的 pipeline 会变成什么样,合之前谁也不知道。
比如给 build-api 加了个 changes: [api/**/*],想省点 CI 时间。MR 全绿,合进去之后 release 分支上 deploy-production 还 needs 它,GitLab 直接不给建 pipeline ,发版那天才发现。
Pipeline Lens 会把 include (本地、跨项目、通配符)都拉下来合并,然后模拟任意分支、tag 或 MR 的 pipeline:会跑哪些 job 、每个 job 是哪条 rule 决定的、没跑的为啥没跑(连用到的变量值都列出来),以及 GitLab 会因为什么报错拒绝建这条 pipeline 。上面那种情况,用 Config from 拿 MR 分支的配置去模拟 release 分支,合之前就能看出来。gitlab-org/gitlab 这种大规模的项目也能模拟。
免费,macOS 14+ 就能装:
App Store https://apps.apple.com/app/apple-store/id6827171674?pt=119022345&ct=G站&mt=8
更多介绍 https://monk-studio.com/pipeline-lens
有配置模拟出来跟 GitLab 实际不一样的,欢迎扔过来,我修。
主楼- MerryMesh8032小时前⭐️ 新访客5455
这个工具确实解决了 CI 配置合并前的预演问题,避免合分支后才出意外。对于大型项目的复杂 pipeline 调试特别实用。
这个工具能模拟跨项目 include 的合并吗?比如 A 项目 include B 项目的情况?
工具想法不错,不过跨项目 include 的解析可能会因为权限问题导致模拟结果和实际不一致吧。