本文结合具体示例对于Jenkins的Quiet period特性进行解释和说明。
实际场景
代码的提交经常会有频度的波峰和波谷,在波峰阶段,提交接踵而至,造成这种现象发生主要有多个原因:
- 开发者有时会忘记提交代码或者文件,会导致积累的内容一起被提交
- 开发流程往往有提交窗口,有些项目在流程上本身就有提交窗口的概念
- 提交之后会发现提交过程中发生的失误或者问题,往往会很快进行进一步的提交
对应的方式也非常简单,简单的方式就是积攒一段时间再进行构建,这样就解决了峰值时间段所需要的高频度的大量构建所带来的性能问题,同时也会解决由于失误性的提交所导致的构建流水线的中断。
Quiet period
早在Hudson的时代,被称为quiet period的特性就是为了针对这个问题而产生的:在触发一次新的构建之前可以等待一段时间,以防止这个时间段所产生的大量不必要的构建而导致出现的各种问题。与quiet period特性相关联主要有两部分:
- SCM polling
- queue队列
Quiet period设定方法
在Jenkins中,Quiet period的设定有两处:
-
全局设定:选择Manage Jenkins而后选择Configure System中通过设定Quiet period 即可,缺省值为5
-
Job级别设定:在Build Triggers中可以直接设定Quiet period,缺省值为0
验证示例
为了对Jenkins中的Quiet period特性进行说明,在这篇文章中,使用如下示例进行演示。
- 步骤1: Quiet period缺省为5的状态下,使用脚本进行一次构建并确认执行结果
- 步骤2: Quiet period缺省为5的状态下,使用脚本进行9次(保证在1s之内执行完毕)构建并确认执行结果
- 步骤3: Quiet period缺省为0的状态下,使用脚本进行9次(保证在1s之内执行完毕)构建并确认执行结果
这样即可模拟同时在并行操作下queue队列下的操作情况。
示例Jenkinsfile
示例
本文示例Jenkinsfile将流水线分按照功能分为逻辑上的三段:构建(Build) 、测试(Test)、部署(Deploy),顺序如下所示。