GitLab + Jenkins + Docker 实现 CI/CD 集成发布

前言

        在没有持续集成持续发布之前,传统的开发模式是项目一开始就划分模块,等到所有代码开发完成之后再集成到一起进行测试,但是随着技术的发展,业务量不断增加,软件规模也在不断的扩大,单一的划分模块的方式就会出现特别多的问题,由于代码中的很多 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是一个开源软件项目,是基于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值