什么是CICD,以及我所熟知的CICD⼯具都是有哪些?
第⼀部分:什么是CI/CD
在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这⼏个术语。但它们真正的意思是什么呢?
CI/CD 是 DevOps 的基础,CI/CD 侧重于软件开发过程中的⾃动化,⽽ Devops 则是侧重于⽂化构建,旨在减少开发、运维、QA之间的沟通鸿沟,促进快速可靠发布的同时还保证产品质量。
CI/CD ⼀系列流程通常会组成⼀个流⽔线,和则可以简化这些流⽔线中的很多流程,⽐如Docker容器可以很容易把有冲突的环境隔离开来,⽽Kubernetes则更进⼀步简化整个流⽔线的构建、执⾏和维护⼯作。
CI
1. 基本概念:
CI全名Continuous integration(持续集成),简单来说持续集成就是频繁地(⼀天多次)将代码集成到主⼲;
每次集成都通过⾃动化的构建(包括编译、发布、⾃动化测试)来验证,从⽽尽快地发现集成错误。
2. 好处
快速发现错误,每完成⼀点更新,就集成到主⼲,可以快速发现错误,定位错误也⽐较容易
防⽌分⽀⼤幅偏离主⼲,如果不是经常集成,主⼲⼜在不断更新,会导致以后集成的难度变⼤,甚⾄难以集成
持续集成的概念更快速的发布更新,持续集成可以帮助团队更快速、更积极的发布程序和更新程序。在发布时可⾃动完成⼤量重复的⼯作、节省⼈⼒3. ⽬的
让产品可以快速迭代,同时还能保持⾼质量。它的核⼼措施是,代码集成到主⼲之前,必须通过⾃动化测试。只要有⼀个测试⽤例失败,就不能集成。
持续集成并不能消除 Bug,⽽是让它们⾮常容易的发现和改正。
CD
基本概念:
CD全名Continuous delivery(持续交付),简单来说持续交付就是频繁地将软件的新版本,交付给质量团队或者⽤户,以供评审。如果评审通过,代码就进⼊⽣产阶段;
持续交付可以看作持续集成的下⼀步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
第⼆部分:我们熟知的CI/CD⼯具都是有哪些?
GitLab CI
GitLab 是 CI/CD 领域的⼀个新⼿玩家,但它已经在 Forrester Wave 持续集成⼯具中占据了领先地位。在这样⼀个竞争对⼿众多⽽⽔平⼜很⾼的领域,这是⼀项巨⼤的成就。是什么让 GitLab CI 如此了不起?
它使⽤ YAML ⽂件来描述整个管道。
它还有⼀个功能叫 Auto DevOps,使⽐较简单的项⽬可以⾃动构建内置了若⼲测试的管道。
使⽤ Herokuish 构建包来确定语⾔以及如何构建应⽤程序。有些语⾔还可以管理数据库,对于构建新的应⽤程序并在开发过程⼀开始就将其部署到⽣产环境中,这是⼀个很重要的功能。
提供到 Kubernetes 集的原⽣集成,并使⽤多种部署⽅法的⼀种(如基于百分⽐的部署和蓝绿部署)将应⽤程序⾃动部署到Kubernetes 集中。
除了 CI 功能之外,GitLab 还提供了许多补充功能,⽐如⾃动把 Prometheus 和你的应⽤程序⼀起部署,实现运⾏监控;使⽤ GitLab 问题(Issues)、史诗(Epics)和⾥程碑(Milestones)进⾏项⽬组合和项⽬管理;管道内置了安全检查,提供跨多个项⽬的聚合结果;使⽤ WebIDE 在 GitLab 中编辑代码的能⼒,它甚⾄可以提供预览或执⾏管道的⼀部分,以获得更快的反馈。
Jenkins
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 来说,这是激动⼈⼼的时刻,我期待着它在这个领域的创新和持续的领导地位。
未完待续

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。