一. CI/CD介绍
互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:
编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署
可以发现持续集成Continuous Integration 持续交付Continuous Delivery 和持续部署 Continuous Deployment有不同的软件自动化交付周期
持续集成(CI)
整个流程中最重要的部分就是持续集成 Continuous integration 简称CI
持续集成是指 频繁的将代码集成到主干,将软件个人研发的部分向软件整体部分交付,频繁的进行集成可以更加快速的发现其中的错误。
好处有两个
1.快速发现错误,每完成一点更新就集成到主干,可以快速发现错误。定位错误也比较容易
2.防止分支大幅偏离主干,如果不是经常集成,主干又在不停的更新,会导致以后集成的难度变大,甚至难以集成
持续集成的目的是使产品快速迭代,同时能保证高质量
持续交付(CD)
持续交付指的是在持续集成的基础上,频繁的将软件新版本交付给质量团队或者用户,以供评审,如果评审通过,代码就进入生产阶段。
二.Jenkins介绍
概念:
Jenkins是一个开源的,可扩展的持续集成,交付,部署的基于web界面的平台,允许持续集成和持续交付项目,无论用什么平台,可以处理任何类型的构建和持续集成。
开源的java语言开发持续集成工具,支持CI,CD;
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
特性:
易于安装
不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中
易于配置
所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
生成JUnit或TestNG的测试报告
文件识别
jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
分布式构建
插件支持
jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件