我们可以对多个阶段使用触发器指令吗



嗨,我想知道多个阶段是否可以有triggers指令,如果没有,那么我需要一些方法来安排每个阶段的

pipeline{
stages{
stage{
triggers{cron (#some_exp)}
steps{
# Some steps
}
}
stage{
triggers{cron (#some_exp)}
steps{
# Some steps
}
}
}
}

如果您想单独触发每个阶段,这意味着每个阶段可能是一个单独的业务逻辑单元,因此您应该认真考虑为每个步骤创建一个单独作业,以避免将它们全部打包到具有多个触发器和打包逻辑的单个作业中。

但是,如果你仍然想实现你想要的目标,你可以使用参数化调度器插件来实现,该插件使你能够定义用特定环境变量触发作业的cron触发器,然后你可以使用该变量作为条件来确定执行哪一步。

这里有一个实现它的例子:

pipeline {
agent any
parameters {
string(name: 'STAGE', defaultValue: 'setup', description: 'Which stage to run')
}
triggers {
parameterizedCron('''
*/2 * * * * %STAGE=setup
*/3 * * * * %STAGE=build
''')
}
stages {
stage('Setup') {
when {
expression { STAGE== 'setup' }
}
steps {
echo "In Setup stage - STAGE parameter is ${STAGE}" 
...
}
}
stage('Build') {
when {
expression { STAGE== 'build' }
}
steps {
echo "In Build stage - STAGE parameter is ${STAGE}"
...
}
}
...
}
}

最新更新