文章目录
-
- 相关概念
-
- 持续集成(CI)
- 持续测试
- 持续交付(CD)
- 持续部署
- Jenkins
-
- Jenkins 是什么
- Jenkins 如何使用
-
- Jenkins 插件下载
- 查看Jenkins的系统配置
- Jenkins 创建任务
- Jenkins 配置定时任务
- Jenkins 配置实时任务
- Jenkins如何操作邮件
相关概念
持续集成(CI)
在了解持续集成前,我们需要知道什么是集成?
集成(CI) 就是将从分支新提交上来的代码与从主干上拉取到的最新代码在一个模拟的,临时的,干净的环境进行合并,并将其进行编译,打包成可执行的文件,然后运行事先编译好的测试套件,包括单元测试,集成测试,安全漏洞扫描,代码风格检查等。这整个过程都是自动进行的,其依赖于CI服务器所提供的CI服务,当你push代码到远程分支时,就会自动触发CI服务,CI服务通过后,还会进行人工评审,评审没问题后,新代码才会真正的合并(自动或手动)到主干。
注意 : 如果
CI服务没有通过的话,CI会明确告知开发者本次代码无法安全集成,并停止后续流程。
单元测试 在整个开发过程中必须持续地进行,不仅CI服务中要进行单元测试,本地也要进行单元测试。
持续集成 (Continuous Integration) 指的是频繁的(一天多次)将代码集成到主干(master),它的好处主要有以下两个:
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较方便。
- 防止分支大幅度偏离主干。如果没有经常集成,而主干又在不断更新,就可能导致以后集成难度变大,甚至难以集成。
现在要同时开发五个功能,那么就会有五条分支,假设每个分支初始拉取到主干版本为2.0,如果某一个分支没有持续集成,分支上开发功能又分为多个模块,其他分支上开发完成一个模块并通过
测试后,就合并到主干,这时主干版本随之更新,而当这个没有持续集成的分支完成所有模块的开发并通过测试后,想要合并到主干,则可能因为自身(2.0)与主干版本(可能3.0,4.0...)差距过大,而难以集成。
持续测试
持续测试 ,这不是一个独立的阶段,而是贯穿整个软件周期始终,在各个方面(单元,集成,系统,性能,安全)对软件进行持续性验证。
代码上线的主要流程 :
持续集成的代码--->Test环境--->类生产环境--->生产环境
测试 不仅仅会在CI 阶段进行,CI 阶段结束后,也会在Test环境中进行更专业的测试(如功能测试,集成测试,部分功能性系统测试), 即SIT测试 ,该测试通过后,就可以将软件提交到类生产环境进行测试,即UAT测试 (如端到端测试(模拟用户操作整个业务流程),性能测试,压力测试,用户验收测试等)。
持续交付(CD)
交付 可以看作是集成 的下一步,其在集成 的基础上,将集成后并通过Test环境验证的软件代码部署 到更贴近真实运行环境的类生产环境中进行验证,直到软件进入可发布状态 ,即通过用户验收测试。
Test环境的测试是为交付 所做的准备,该环境的测试通过也是交付的前提。
持续交付 (Continuous Delivery)指频繁的将软件的新版本部署到类生产环境中验证,确保每一次软件的变更都能迅速的,可靠的达到可发布状态。
持续交付 的软件经过人工评审后,就可以将代码部署到生产环境中,即正式发布。
持续部署
持续部署 (Continuous Deployment)是持续交付 的高级版本,指的是软件代码一旦发生变更,就会自动部署到生产环境中。与持续交付的区别是: 持续交付 最后需要通过人工评审,手动部署到生产环境,而持续部署则全程自动化,一旦变更,自动上线,无需人工干预。
持续部署 全程自动化,其中重点就是验收测试自动化,相较于传统的人工验收测试,持续部署 会进行渐进式验收,其会将变更自动部署到生产环境,但只会向少部分用户开放,并且通过实时监控和业务指标进行最终验证,指标没问题,就会逐步向所有用户开放。
Jenkins
Jenkins 是什么
Jenkins 是一个开源的,可以实现持续集成的工具,可以将其看作一个简单的CI服务器。它能够实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。
Jenkins 如何使用
关于jenkins的下载安装,网上的教程颇多,这里就不再赘述了,下面主要讲下它是如何使用的:
Jenkins 插件下载
-
点击
Manage Jenkins

-
点击
Plugins

-
进入插件管理界面

安装Git与Gitee:
查看Jenkins的系统配置

Jenkins 创建任务
所谓的创建任务 ,就是指Jenkins拉取到整个项目的最新代码,并自动进行一系列的操作 ,包括对整个项目代码进行集成或者交付。
自动化脚本与项目源代码是放在同一个根目录,拉取的时候,是将整个仓库的所有代码进行拉取,而自动进行一系列操作,其实就是Jenkins 自动依次调用自动化脚本,而这个调用的次序和策略是由Jenkinsfile文件决定的,它是由Groovy DSL编写的文本文件。
事实上所谓的Jenkins 执行任务,就是直接识别加载和解析
Jenkinsfile文件中的指令。
创建任务流程:




Jenkins 配置定时任务
-
新建job成功后,点击:
Dashboard(列表),对新建的任务进行修改:任务名下拉箭头--->Configure


-
Build Triggers(构建任务触发条件)

-
Build periodically(定期生成构建任务)
定期生成构建任务的格式:
分钟(0 - 59) 小时(0 - 23) 一个月中的日子(1 - 31) 月份(1 - 12) 星期中的日子(0 - 7,其中0和7都代表星期日)具体例子:
0 3 * * *(*表示匹配所有,每天3点整运行一次)
0 19 * * 2,4,6 (, 是英文的,每周的2,4,6的19点运行一次)
0 20 1-10 * * (每个月前10天的20点执行一次)
0 20 * * */2 (每周隔2天20点执行一次)



Jenkins 配置实时任务
以下以Gitee为例:
- 在
Gitee平台配置Webhook(网络钩子)




- 在
jenkins平台配置Poll SCM

Jenkins如何操作邮件
1、开通邮箱SMTP服务:
-
登录邮箱后台,在账户设置中找到SMTP服务设置并开启
-
对于
Gmail,需要开启IMAP服务并设置两步验证以获取应用专用密码 -
对于
QQ邮箱,直接开启SMTP服务并获取授权码。
2、在Jenkins中配置SMTP服务:
-
点击
"Manage Jenkins"--->"Manage Plugins",在"Available"标签页中搜索并安装Email Extension Plugin等邮件发送相关的插件 -
在
Jenkins管理界面,点击"Manage Jenkins"--->"Configure System" -
滚动到
"E-mail Notification"部分,填写SMTP服务器 信息,包括SMTP服务器 地址、端口号、发送者邮箱地址、邮箱授权码(或密码)、默认内容类型(文本或HTML)、主题、收件人列表等。

