我必须将参数传递给jenkins pipelineTrigger中的timeTrigger函数,但是它没有使用该参数。我必须安排2个版本,一个用于Dev每8个小时,其他用于每12个小时进行一次。
参见下面的代码
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()
])
}
上面的代码没有占用环境,它只触发pipeTriggers中的第二个条目,而不是两者。 : - (
答案 0 :(得分:2)
执行管道脚本时,properties
将设置为jenkins作业(config.xml
)。因此,如果正常的jenkins作业不支持多个时间触发器,则您的脚本也不会按预期工作。
请执行它并检查jenkins作业配置和config.xml
以了解结果。
<强>建议强>
在另一个逻辑中更改您的解决方案(如果它仍然是8&amp; 12小时)
steps
中进行一些逻辑检查,以便在不同的时间运行不同的阶段。答案 1 :(得分:1)
我认为如果您创建两个或三个构建计划而不是一个构建计划,那么您将有更好的时间。
如果你创建了两个,那么将有一个用于开发,一个用于登台,并且每个都有自己的触发器并进行适当的部署。
如果您有三个,那么会有一个(让他们称之为&#34;部署&#34;构建计划)进行部署并且采用TARGET_ENVIRONMENT参数或类似的(使用值dev或stg) 。另外两个会有触发器,他们会调用部署构建计划来完成实际工作。您可以从Jenkins文件中调用另一个构建计划,如下所示:
build job: 'deployment', parameters: [string(name: 'TARGET_ENVIRONMENT', value: 'dev')]