一、Gitlab CI/CD优势
- 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。
- 易于学习: 具有详细的入门文档。
- 无缝集成: GitLab CI / CD是GitLab的一部分,支持从计划到部署,具有出色的用户体验。
- 可扩展: 测试可以在单独的计算机上分布式运行,可以根据需要添加任意数量的计算机。
- 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
- 针对交付进行了优化: 多个阶段,手动部署, 环境 和 变量。
二、Gitlab CI/CD特点
- 多平台: Unix,Windows,macOS和任何其他支持Go的平台上执行构建。
- 多语言: 构建脚本是命令行驱动的,并且可以与Java,PHP,Ruby,C和任何其他语言一起使用。
- 稳定构建: 构建在与GitLab不同的机器上运行。
- 并行构建: GitLab CI / CD在多台机器上拆分构建,以实现快速执行。
- 实时日志记录: 合并请求中的链接将您带到动态更新的当前构建日志。
- 灵活的管道: 您可以在每个阶段定义多个并行作业,并且可以 触发其他构建。
- 版本管道: 一个 .gitlab-ci.yml文件 包含您的测试,整个过程的步骤,使每个人都能贡献更改,并确保每个分支获得所需的管道。
- 自动缩放: 您可以 自动缩放构建机器,以确保立即处理您的构建并将成本降至最低。
- 构建工件: 您可以将二进制文件和其他构建工件上载到 GitLab并浏览和下载它们。
- Docker支持: 可以使用自定义Docker映像, 作为测试的一部分启动 服务, 构建新的Docker映像,甚至可以在Kubernetes上运行。
- 容器注册表: 内置的容器注册表, 用于存储,共享和使用容器映像。
- 受保护的变量: 在部署期间使用受每个环境保护的变量安全地存储和使用机密。
- 环境: 定义多个环境。
三、Gitlab CI/CD架构
3.1Gitlab CI / CD
GitLab的一部分,GitLab是一个Web应用程序,具有将其状态存储在数据库中的API。 除了GitLab的所有功能之外,它还管理项目/构建并提供一个不错的用户界面。
3.2Gitlab Runner
是一个处理构建的应用程序。 它可以单独部署,并通过API与GitLab CI / CD一起使用。
3.3.gitlab-ci.yml
定义流水线作业运行,位于应用项目根目录下 。
为了运行测试,至少需要一个 GitLab 实例、一个 GitLab Runner、一个gitlab-ci文件
四、Gitlab CI/CD工作原理
- 将代码托管到Git存储库。
- 在项目根目录创建ci文件 .gitlab-ci.yml ,在文件中指定构建,测试和部署脚本。
- GitLab将检测到它并使用名为GitLab Runner的工具运行脚本。
- 脚本被分组为作业,它们共同组成了一个管道。
管道状态也会由GitLab显示:
最后,如果出现任何问题,可以轻松地 回滚所有更改:
五、gitlab CI简介
gitlab ci是在gitlab8.0之后自带的一个持续集成系统,中心思想是当每一次push到gitlab的时候,都会触发一次脚本执行,然后脚本的内容包括了测试、编译、部署等一系列自定义的内容。
gitlab ci的脚本执行,需要自定义安装对应的gitlab runner来执行,代码push之后,webhook检测到代码变化,就会触发gitlab ci,分配到各个runner来运行相应的脚本script。这些脚本有些是测试项目用的,有些是部署用的。
六、Gitlab ci与Jenkins对比
6.1分支可配置性
使用gitlab ci,新创建的分支无需任何进一步的配置即可立即使用CI管道中的已定义作业。
Jenkins基于gitlab的多分支流水线插件可以实现。相对配置来说,gitlab ci更加方便。
6.2拉取请求支持
如果很好的集成了存储库管理器的CI/CD平台,可以看到请求的当前构建状态。使用这个功能,可以避免将代码合并到不起作用或者无法正确构建的主分支中。
-Jenkins没有与源代码管理系统进一步集成,需要管理员自行写代码或者插件实现。
-gitlab与其CI平台紧密集成,可以方便查看每个打开和关闭拉动请求的运行和完成管道。
6.3权限管理
- gitlab ci是git存储库管理器gitlab的固定组件,因此在ci/cd流程和存储库直接提供了良好的交互。
- Jenkins与存储库管理器都是松散耦合的,因此在选择版本控制系统时它非常灵活。此外,就像其前身一样,Jenkins强调了对插件的支持,以进一步扩展或改善软件的现有功能。
6.4插件管理
扩展Jenkins的本机功能是通过插件完成的,插件的维护,保护和成本很高。
gitlab是开放式的,任何人都可以直接向代码库贡献更改,一旦合并,它将自动测试并维护每个更改
七、Jenkins vs GitLab CI/CD 优缺点
7.1Jenkins 的优点
- 大量插件库
- 自托管,例如对工作空间的完全控制
- 容易调试运行,由于对工作空间的绝对控制
- 容易搭建节点
- 容易部署代码
- 非常好的凭证管理
- 非常灵活多样的功能
- 支持不同的语言
- 非常直观
7.2Jenkins 的缺点
- 插件集成复杂
- 对于比较小的项目开销比较大,因为你需要自己搭建
- 缺少对整个 pipeline 跟踪的分析
7.3GitLab CI/CD 的优点
- 更好的 Docker 集成
- 运行程序扩展或收缩比较简单
- 阶段内的作业并行执行
- 有向无环图 pipeline 的机会
- 由于并发运行程序而非常易于扩展收缩
- 合并请求集成
- 容易添加作业
- 容易处理冲突问题
- 良好的安全和隐私政策
7.4GitLab CI/CD 的缺点
- 需要为每个作业定义构建并上传 / 下载
- 在实际合并发生之前测试合并状态是不可能的
- 还不支持细分阶段
八、对比总结
8.1gitlab ci
- 轻量级,不需要复杂的安装手段
- 配置简单,与gitlab可直接适配
- 实时构建日志十分清晰,UI交互体验很好
- 使用yaml进行配置,任何人都可以很方便的使用
- 没有统一的管理界面,无法统一管理所有的项目
- 配置依赖于代码仓库,耦合度没有Jenkins低
8.2Jenkins
- 编译服务和代码仓库分离,耦合度低
- 插件丰富,支持语言众多
- 有统一的web管理页面
- 插件以及自身安装较为复杂
- 体量较大,不适合小型团队开发。
九、适用场景
- gitlab ci有助于devops人员,例如敏捷开发中,开发人员与运维是同一个人,最便捷的开发方式
- Jenkins适合在多角色团队中,职责分明,配置与代码分离,插件丰富。
评论 (0)