Jenkins 是一款开源 CI&CD 软件

持续集成(CI)

1
2
3
持续集成是指多名开发这在开发不同功能代码的过程中,可以频繁的将代码合并到一起并且相互不影响工作。

持续集成是在版本控制的基础上,通过频繁的代码提交、自动化构建和单元测试加快集成周期和问题反馈速度,从而及时验证系统可用性。为了保证后续的系统质量,在持续集成过程中,还会加入代码规范扫描、安全漏洞扫描、集成测试等活动,用来保证代码形成过程符合质量要求。持续集成的频率达到每天多次、频繁的集成,可以提前发现问题尽早解决冲突,使后续的持续集成更顺畅。

持续部署(CD)

1
2
3
持续部署是基于某种工具或者平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表一个开发团队的更新迭代速率。

持续部署并不特指通过质量验证的制品自动部署到生产环境的特定环节。在持续集成过程中不断生成可执行的制品,需要尽快验证是否存在功能性能等方面的问题,或者尽可能快速的让最终用户可以使用这些功能。通过持续部署到测试环境、准生成环境中,可以使测试团队尽快开始测试,开发团队获得快速的反馈并响应。使研发和测试的协同加快了进程。通过持续部署到生产环境,让最终用户可见,则可以快速获得最终用户的使用反馈,体现需求的市场价值。

持续交付(CO)

1
2
3
4
5
6
从在不同角色的角度对交付进行解读会有不同含义。

对于产品研发团队来说,产品的版本更新迭代和交付,版本通过各阶段测试达到可提供给客户使用的状态即为可交付。
对于项目实施团队来说,持续交付是要将客户要求实现的功能部署到客户的生产环境,通过验收即为交付。
对于最终用户来说,持续交付是最终用户可以使用相关的功能即为交付。
持续交付是指持续的将各类变更(包括新功能、缺陷修复、配置变化、实验等)安全、快速、高质量地落实到生产环境或用户手中的能力。持续交付的能力通过自动化流水线的方式实现,减少研发过程中不必要的浪费,近而缩短整个研发过程中所有需求的交付周期。持续交付是一个整体过程,从一个业务端的想法到系统功能可以面对客户的全流程。

1、jenkins触发式构建:

用于开发环境部署,开发人员push代码或者合并代码到gitlab项目的master分支,jenkins就部署代码到对应服务器。

2、jenkins参数化构建:

用于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项目的master分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。

3、jenkins定时构建:

用于APP自动打包,定时构建是在参数化构建的基础上添加的,开发人员可以登录jenkins手动传入tag进行打包,如果不手动打包,那么jenkins就每天凌晨从gitlab拉取最新的APP代码打包。