我必须将参数传递到jenkins pipeLinetigr中的timetrigger函数,但它没有采用该参数。我必须安排2个构建,一个是每8小时开发一次,另一个用于每12小时进行一次。
- 问题1:我可以触发2以这种方式构建吗?
- 问题2:如何传递参数以指定环境?
请参阅下面的代码
environmentParam = ['dev', 'qa', 'stg']
originParam = ['Automatic', 'Manual']
if (env.BRANCH_NAME == "master") {
properties([
[$class : 'ParametersDefinitionProperty',
parameterDefinitions:
[
[$class : 'ChoiceParameterDefinition',
choices : environmentParam.join('n'),
description: 'Environment to run the Integration tests',
name : 'environment'
],
[$class : 'ChoiceParameterDefinition',
choices : originParam.join('n'),
description: 'The execution of this job was Automatic or Manual',
name : 'origin'
]
]
],
pipelineTriggers(
[
[
$class: 'TimerTrigger', spec: 'H */12 * * *', environment: 'stg'
],
[
$class: 'TimerTrigger', spec: 'H */8 * * *', environment: 'dev'
]
]
),
disableConcurrentBuilds()
])
}
上面的代码没有占据环境,它仅在PipeLinetriggers中触发第二个条目,而不是两者兼而有之。: - (
- 问题1:不,您现在不能做。
执行管道脚本时,properties
将设置为Jenkins作业(config.xml
)。因此,如果普通詹金斯(Jenkins)作业中不支持多个时间触发器,那么您的脚本也将无法正常工作。
请执行它并检查Jenkins作业Configuraion和config.xml
以了解结果。
建议
在另一种逻辑中更改解决方案(如果仍然是8& 12小时)
- 触发您的工作每4小时运行一次
- 保持两个选择参数。
- 尝试在
steps
中进行一些逻辑检查以在不同的时间内运行不同的阶段。
我认为,如果您创建两个或三个构建计划而不是一个。
,您将有更好的时间。如果您创建了两个,则将有一个用于开发人员,一个登台,他们每个人都有自己的触发器并进行适当的部署。
如果您有三个,则会有一个(我们称其为"部署"构建计划)确实部署了,并且采用了target_environment参数或类似(带值DEV或STG)。另外两个将有触发器,他们每个人都会调用部署构建计划来完成实际工作。您可以从这样的詹金斯菲尔(Jenkinsfile)调用另一个构建计划:
build job: 'deployment', parameters: [string(name: 'TARGET_ENVIRONMENT', value: 'dev')]