我有一个脚本化的管道,我想执行不同的操作:
我知道我可以定义多个触发器
properties(
pipelineTriggers([cron("0 12 * * *"), cron("* * * * 6")])
)
但是我不知道以后如何定义工作
if (???) {
sh "run complex task"
} else if (???) {
sh "run tests"
}
如何找出哪个cron规则触发了我的任务?
答案 0 :(得分:1)
我相信您在构建期间无法获得cron信息。 TimerTriggerCause仅包含由计时器触发生成的信息。
node {
properties([
pipelineTriggers([cron("* * * * *")])
])
def timeTriggerCause = currentBuild.rawBuild.getCause(hudson.triggers.TimerTrigger.TimerTriggerCause)
println timeTriggerCause?.getShortDescription()
}
解决方案组合:
编辑:我添加了多个管道设置的示例
PIPELINE_RUN_COMPLEX_TASK:
node {
properties([pipelineTriggers([cron('* * * * 6')])])
build job: 'PIPELINE_MAIN', parameters: [booleanParam(name: 'RunComplexTask', value: true)]
}
PIPELINE_RUN_TESTS:
node {
properties([pipelineTriggers([cron('0 12 * * *')])])
build job: 'PIPELINE_MAIN', parameters: [booleanParam(name: 'RunComplexTask', value: false)]
}
PIPELINE_MAIN:
if(RunComplexTask.toBoolean())
{
echo "Running complex task"
}
else
{
echo "Running tests"
}
管道主管道具有我提到的布尔参数。