网站建设分几模块,广州 网站开发 骏域,做别墅装修的公司,英文网站推广Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler#xff1f;如何配置实现呢…Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler如何配置实现呢示例一不同corn表达式指定单个参数的值示例二不同corn表达式指定多个参数的值 声明式pipeline 配置例子使用when/triggeredBy指令内置的cron 触发器中cron表达式结合when/triggeredBy指令parameterizedCron 触发器中cron表达式结合when/triggeredBy指令parameterizedCron 触发器中cron表达式参数控制stage执行 脚本化管道示例config页面直接配置参考关于corn表达式关于when Jenkins插件名称Parameterized Scheduler 插件链接Parameterized Scheduler插件官方文档 这个是官方文档其中包含了安装介绍使用示例Issues等相关信息。 config位置configure-Build Triggers-Build periodically with parameters 下面为对官方文档的机翻自我理解和使用实例补充。
什么是Parameterized Scheduler
Parameterized Scheduler是一个 Jenkins 插件支持在构建计划中设置参数。支持使用多个 cron 行每个 cron 行都以 % 和一些键值对namevalue结尾可以安排参数化构建在不同时间使用不同参数运行。 能在不同的cron表达式下设置不同的参数值可以同时设置多个参数值。 安装参考https://www.jenkins.io/doc/book/managing/plugins/ 安装完之后配置页面config会有如下标识
如何配置实现呢
Build periodically with parameters中% 符号之前的 cron表达式的编写和处理方式与 jenkins 中的 Build periodically Schedule 相同。不同的是Build periodically with parameters在corn表达式后加%,然后添加项目构建参数所需的namevalue键值对,可以同时添加多个。 这个插件的idea源于Job流程构建时可能会使用到不同环境的需要。在不同的定时构建条件下构建流程的参数可以设置为不同的从而控制流程的开合。 其中Build periodically Schedule中cron表达式类似为
triggers{cron(H * * * *)
}Build periodically with parameters的cron表达式设置可参考下文
示例一不同corn表达式指定单个参数的值
在此示例中有两个cron表达式表示的是两种定时构建方案。 其中每隔15min触发的Job流程里Job参数会被设置为envint 其中每隔30min触发的Job流程里Job参数会被设置为envqa
# lets run against the integration environment at 15 past the hour
15 * * * * %envint
# run QA too
30 * * * * %envqa在pipeline中该代码片段为
triggers {parameterizedCron(15 * * * * %envint30 * * * * %envqa)
}示例二不同corn表达式指定多个参数的值
比如有三个参数 ● furniture ● color ● name (with a default of fred 可以使用如下流程
# leave spaces where you want them around the parameters. Theyll be trimmed.
# we let the build run with the default name
5 * * * * %furniturechair;colorblack
# now, lets override that default name and use Mr. Rubble.
10 * * * * %furnituredesk;coloryellow;namebarney表示每5min触发一次Job流程Job参数会被设置为furniturechair;colorblack 每20min触发一次的Job流程Job参数会被设置为furnituredesk;coloryellow;namebarney 在pipeline中该代码片段为
triggers {parameterizedCron(5 * * * * %furniturechair;colorblack10 * * * * %furnituredesk;coloryellow;namebarney)
}声明式pipeline 配置例子
可以使用触发器指令下的keyparameterizedCron来指定参数化 cron 触发器。内置的 cron 触发器仍然可用并且独立于parameterizedCron。 例子
pipeline {agent anyparameters {string(name: PLANET, defaultValue: Earth, description: Which planet are we on?)string(name: GREETING, defaultValue: Hello, description: How shall we greet?)}triggers {parameterizedCron(# leave spaces where you want them around the parameters. Theyll be trimmed.# we let the build run with the default name*/2 * * * * %GREETINGHola;PLANETPluto*/3 * * * * %PLANETMars)}stages {stage(Example) {steps {echo ${params.GREETING} ${params.PLANET}script { currentBuild.description ${params.GREETING} ${params.PLANET} }}}}
}使用when/triggeredBy指令
when指令的选项之一是triggeredBy子句。当使用内置的 cron 触发器时应该使用triggedBy TimerTrigger。但是parameterizedCron 触发器与内置触发器是不同的触发器因此应该相应地更新triggeredBy,为 triggeredBy ParameterizedTimerTriggerCause。
内置的cron 触发器中cron表达式结合when/triggeredBy指令
使用Build periodically Schedule中cron表达式执行 控制某阶段 只能在定时构建时才触发这个流程时需要写为
pipeline {agent anyparameters {string(name: PLANET, defaultValue: Earth, description: Which planet are we on?)string(name: GREETING, defaultValue: Hello, description: How shall we greet?)}triggers {cron(*/2 * * * *)stages {stage(Example) {when {triggeredBy TimerTrigger}steps {echo This build was triggered by a parameterizedCron trigger}}}
}parameterizedCron 触发器中cron表达式结合when/triggeredBy指令
使用Build periodically with parameters中cron表达式执行 控制某阶段 只能在定时构建时才触发这个流程时需要写为
pipeline {agent anyparameters {string(name: PLANET, defaultValue: Earth, description: Which planet are we on?)string(name: GREETING, defaultValue: Hello, description: How shall we greet?)}triggers {parameterizedCron(# leave spaces where you want them around the parameters. Theyll be trimmed.# we let the build run with the default name*/2 * * * * %GREETINGHola;PLANETPluto*/3 * * * * %PLANETMars)stages {stage(Example) {when {triggeredBy ParameterizedTimerTriggerCause}steps {echo This build was triggered by a parameterizedCron trigger}}}
}相当于该阶段stage(Example) 只在 参数化定时构建parameterizedCron 触发流程时才会执行该阶段流程。手动触发该流程不会触发到这个阶段流程。
parameterizedCron 触发器中cron表达式参数控制stage执行
下面这个示例流程则是当3点定时触发时TEST_MODEDaily会触发stage(daily_test)而不会触发stage(weekly_test) 当4点定时触发Job时TEST_MODEWeekly会触发stage(weekly_test)而不会触发stage(‘daily_test’)
pipeline {agent anyparameters {string(name: TEST_MODE, defaultValue: , description: TEST MODE: Daily Weekly)}triggers {parameterizedCron(H 3 * * * %TEST_MODEDailyH 4 * * * %TEST_MODEWeekly)stages {stage(daily_test) {when {environment name: TEST_MODE, value: DailybeforeAgent true}steps {echo Daily Test}}stage(weekly_test) {when {environment name: TEST_MODE, value: WeeklybeforeAgent true}steps {echo WeeklyTest}}}
}这样就能实现在不同时间点控制传递给Job的参数值并根据参数值控制执行不同流程。
脚本化管道示例
在脚本式管道要实现这个可以参考下文
properties([parameters([string(name: PLANET, defaultValue: Earth, description: Which planet are we on?),string(name: GREETING, defaultValue: Hello, description: How shall we greet?)]),pipelineTriggers([parameterizedCron(*/2 * * * * %GREETINGHola;PLANETPluto*/3 * * * * %PLANETMars)])
])config页面直接配置 参考
关于corn表达式
Jenkins cron定时构建触发器
关于when
when的用法