Gitlab ci与Jenkins对比
# gitlab CI简介
gitlab ci是在gitlab8.0之后自带的一个持续集成系统,中心思想是当每一次push到gitlab的时候,都会触发一次脚本执行,然后脚本的内容包括了测试、编译、部署等一系列自定义的内容。
gitlab ci的脚本执行,需要自定义安装对应的gitlab runner来执行,代码push之后,webhook检测到代码变化,就会触发gitlab ci,分配到各个runner来运行相应的脚本script。这些脚本有些是测试项目用的,有些是部署用的。
# Gitlab ci与Jenkins对比
# 分支可配置性
- 使用gitlab ci,新创建的分支无需任何进一步的配置即可立即使用CI管道中的已定义作业。
- Jenkins基于gitlab的多分支流水线插件可以实现。相对配置来说,gitlab ci更加方便。
# 拉取请求支持
如果很好的集成了存储库管理器的CI/CD平台,可以看到请求的当前构建状态。使用这个功能,可以避免将代码合并到不起作用或者无法正确构建的主分支中。
- Jenkins没有与源代码管理系统进一步集成,需要管理员自行写代码或者插件实现。
- gitlab与其CI平台紧密集成,可以方便查看每个打开和关闭拉动请求的运行和完成管道。
# 权限管理
从存储管理器继承的权限管理对于不想为每个服务分别设置每个用户的权限的大型开发人员或组织团体很有用。大多数情况下,两种情况下的权限都是相同的,因此默认情况下他们配置在一个位置。
- 由于gitlab与CI深度整合,权限可以统一管理。
- 由于Jenkins没有内置的存储库管理器,因此它无法直接在存储库管理器和CI/CD平台之间合并权限。
# 存储库交互
- gitlab ci是git存储库管理器gitlab的固定组件,因此在ci/cd流程和存储库直接提供了良好的交互。
- Jenkins与存储库管理器都是松散耦合的,因此在选择版本控制系统时它非常灵活。此外,就像其前身一样,Jenkins强调了对插件的支持,以进一步扩展或改善软件的现有功能。
# 插件管理
- 扩展Jenkins的本机功能是通过插件完成的,插件的维护,保护和成本很高。
- gitlab是开放式的,任何人都可以直接向代码库贡献更改,一旦合并,它将自动测试并维护每个更改
# 对比总结
# gitlab ci
- 轻量级,不需要复杂的安装手段
- 配置简单,与gitlab可直接适配
- 实时构建日志十分清晰,UI交互体验很好
- 使用yaml进行配置,任何人都可以很方便的使用
- 没有统一的管理界面,无法统一管理所有的项目
- 配置依赖于代码仓库,耦合度没有Jenkins低
# Jenkins
- 编译服务和代码仓库分离,耦合度低
- 插件丰富,支持语言众多
- 有统一的web管理页面
- 插件以及自身安装较为复杂
- 体量较大,不适合小型团队开发。
# 适用场景
- gitlab ci有助于devops人员,例如敏捷开发中,开发人员与运维是同一个人,最便捷的开发方式
- Jenkins适合在多角色团队中,职责分明,配置与代码分离,插件丰富。
上次更新: 2024/03/13, 11:27:24