大家好,又见面了,我是你们的朋友全栈君。
说明
CICD简单理解也就是持续集成、持续交付、持续部署
在项目开发工作中,可以分为这几个阶段
编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署
其中持续集成、持续交付和持续部署有着不同的软件自动化交付周期,接下来我们通过例子来理解。
首先引用一个例子
譬如说,你开了一家公司,雇了很多码农在一起写代码。
- 你说,要用 Gitlab 做代码管理。当一个码农在自己的开发机上写好代码之后,要合并到主分支里,他首先要发起一个 Merge Request(MR),这会在一个特定服务器上触发一次对他提交的代码的检查,包括代码格式检查、依赖关系检查以及单元测试等一系列检查,等通过了全部检查,他就可以将代码合并到主分支,否则他需要按照错误提示进行修改,然后发起新一轮的检查。然后呢,每天晚上 10 点会有一个定时任务从主分支上拿最新的代码,进行编译打包,最后将打包好的程序推送到一个服务器上保存,这个服务器叫做 Artifact Repository,也就是Jenkins。
- 你又说,要每天将当天打包好的程序部署到测试环境上。也就是说,一个码农晚上 10 点之前提交了代码,那他第二天就可以在测试环境上看到自己新提交的代码的效果了。
- 你 还说,每一个月要在生产环境上部署一个稳定的发布版本。
这三个事例可以分别对应持续集成、持续交付以及持续部署。
1、持续集成(Continuous Integration)
持续集成的概念是:
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
简单理解:
ci 持续集成服务器功能是不断地集成所有正在进行的更改并由不同的开发人员提交到存储库,并检查编译错误。它需要每天多次构建代码,最好是在每次提交之后,以便它可以检测在问题发生时是哪个提交Bug了。
2、持续交付(Continuous Delivery)
持续交付就是定时地、自动地从 Artifact Repository 将最新的程序部署到测试环境里。
3、持续部署(Continuous Deployment)
持续部署就是定时地、自动地将过去一个稳定的发布版本部署到生产环境里。
很明显,集成、交付和部署是软件开发到发布流程中的不同阶段。那所谓的持续是相对于过去的流程提出的。过去的流程是所有人写好代码之后再进行合并,然后再进行测试,最后再发布。这种流程会把风险堆到软件发布前的最后阶段。那持续的概念就是,做一点就马上递交给下一个流程,这样能够尽早地发现并解决问题。
4.补充说明
所谓的持续,就是说每完成一个完整的部分,就向下个环节交付,
发现问题可以马上调整。使得问题不会放大到其他部分和后面的环节。
随着DevOps不断受到重视,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件开发的重要组成部分。
文章引用
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139976.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...