本文共 1966 字,大约阅读时间需要 6 分钟。
在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语。但它们真正的意思是什么呢?
CI/CD 是 DevOps 的基础,CI/CD 侧重于软件开发过程中的自动化,而 Devops 则是侧重于文化构建,旨在减少开发、运维、QA之间的沟通鸿沟,促进快速可靠发布的同时还保证产品质量。
CI/CD 一系列流程通常会组成一个流水线,和则可以简化这些流水线中的很多流程,比如Docker容器可以很容易把有冲突的环境隔离开来,而Kubernetes则更进一步简化整个流水线的构建、执行和维护工作。
1. 基本概念:
CI全名Continuous integration(持续集成),简单来说持续集成就是频繁地(一天多次)将代码集成到主干;
每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。
2. 好处
3. 目的
让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
持续集成并不能消除 Bug,而是让它们非常容易的发现和改正。
基本概念:
CD全名Continuous delivery(持续交付),简单来说持续交付就是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段;
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
GitLab 是 CI/CD 领域的一个新手玩家,但它已经在 Forrester Wave 持续集成工具中占据了领先地位。在这样一个竞争对手众多而水平又很高的领域,这是一项巨大的成就。是什么让 GitLab CI 如此了不起?
除了 CI 功能之外,GitLab 还提供了许多补充功能,比如自动把 Prometheus 和你的应用程序一起部署,实现运行监控;使用 GitLab 问题(Issues)、史诗(Epics)和里程碑(Milestones)进行项目组合和项目管理;管道内置了安全检查,提供跨多个项目的聚合结果;使用 WebIDE 在 GitLab 中编辑代码的能力,它甚至可以提供预览或执行管道的一部分,以获得更快的反馈。
Jenkins 是 CI/CD 领域中一款最早的、久负盛名的工具,是事实上的标准。对于大多数非开发人员来说,Jenkins 可能会是一个不小的负担,并且长期以来也一直是其管理员的负担。然而,这些都是他们想要解决的事项。
Jenkins 配置即代码(JCasC)应该有助于解决困扰管理员多年的复杂配置问题。和其他 CI/CD 系统类似,它允许通过 YAML 文件实现 Jenkins 主节点的零接触配置。Jenkins Evergreen 的目标是通过提供基于不同用例的预定义 Jenkins 配置来简化这个过程。这些发行版应该比标准的 Jenkins 发行版更容易维护和升级。
Jenkins 2 引入了具有两种管道类型的原生管道功能。当你在做一些简单的事情时,这两种方法都不像 YAML 那么容易操作,但是它们非常适合处理更复杂的任务。
Jenkins X 是 Jenkins 的彻底转变,很可能是原生云 Jenkins 的实现(或者至少是大多数用户在使用原生云 Jenkins 时会看到的东西)。它将使用 JCasC 和 Evergreen,并在 Kubernetes 本地以最佳的方式使用它们。对于 Jenkins 来说,这是激动人心的时刻,我期待着它在这个领域的创新和持续的领导地位。
未完待续
转载地址:http://gbgv.baihongyu.com/