前言
在没有持续集成持续发布之前,传统的开发模式是项目一开始就划分模块,等到所有代码开发完成之后再集成到一起进行测试,但是随着技术的发展,业务量不断增加,软件规模也在不断的扩大,单一的划分模块的方式就会出现特别多的问题,由于代码中的很多 Bug 在项目的早期就存在,等到最后集成测试的时候才发现问题,这样会导致开发者需要在集成阶段花费大量的时间去修改代码,再加上软件的复杂性短时间内很难定位错误位置,而持续集成的出现就可以消除这个弊端,下面来讲解什么是持续集成;
一、什么是持续集成?
持续集成(Continuous integration,简称 CI)指的是,频繁的(一天多次)将代码集成到主干,如下图,程序员会将代码提交到代码仓库中,比如:GitHub、GitLab、Gitee等,提交到代码仓库之后通过集成工具(jenkins) 来将提交的代码拉取到集成机器当中,在集成机器上使用编译工具(maven/nodejs)对代码进行编译打包,通过将打好的包(jar/war)提交到需要部署的服务器运行打好的服务包实现交付,而每一次提交代码持续集成机器会通配置 Hook 来自动拉取代码,实现持续集成。
持续集成的目的:就是让产品可以快速迭代,同时还能保持高质量,它的核心措施是,将代码集成到主干之前,必须通过自动化测试们只要有一个测试用例失败,就不能集成;

二、持续集成的流程
下图为整个 CI/CD 的流程图,通过程序员提交代码到代码仓库,由代码仓库来管理程序员所提交的代码,通过 jenkins 服务器来讲代码拉取到本地,并使用 maven 工具对代码进行编译打包,并将打好的包发布到部署服务器并运行服务,下面则是整个构建流程:
1、提交(commit):流程的第一步,是开发者向代码仓库提交代码,所有后面的步骤都始于本地代码的第一次提交(commit)。
2、测试(test 第一轮):代码仓库对 commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试;
3、构建(build):通过第一轮测试,代码就可以合并进主干,就算可以交付了,交付后先进行构建(build),再进入第二轮测试,所谓构建就是指的就是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等。
4、测试(test 第二轮):构建完成,就要进行第二轮测试,如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然构建步骤也就需要移动到第一轮测试前面;
5、部署(deploy):过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact),将这个版本的所有文件打包( tar filename.tar *)存档,发到生成服务器;
6、回滚(RollBACK):一旦当前版本发生问题,就要回滚到上一个版本的构建结果,最简单的做法就是修改以下符号链接,指向上一个版本的目录;

持续集成的好处:
1、降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少;
2、对系统健康持续检查,减少发布风险带来的问题;
3、减少重复性工作;
4、持续部署,提供可部署但元包;
5、持续交付可提供使用的版本;
6、增强团队信心;
三、jenkins 持续集成工具
Jenkins是一个开源软件项目,是基于

最低0.47元/天 解锁文章
1489

被折叠的 条评论
为什么被折叠?



