嗨,我想知道多个阶段是否可以有 triggers
指令,如果没有,那么我需要某种方式来安排每个阶段
pipeline{
stages{
stage{
triggers{cron (#some_exp)}
steps{
# Some steps
}
}
stage{
triggers{cron (#some_exp)}
steps{
# Some steps
}
}
}
}
答案 0 :(得分:0)
如果您想分别触发每个阶段,这意味着每个阶段可能是一个单独的业务逻辑单元,因此您应该认真考虑为每个步骤创建一个单独的作业,以避免将它们全部打包成具有多个触发器的单个作业和打包逻辑。
但是,如果您仍然想实现您想要的,您可以使用 Parameterized Scheduler Plugin 来实现,它使您能够定义使用特定环境变量触发作业的 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}"
...
}
}
...
}
}