由Jenkins管道中的参数化cron触发

由Jenkins管道中的参数化cron触发,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一份詹金斯管道的工作,像这样: 触发器{ parameterizedCron(env.BRANCH_NAME==“master”?“0 12***%RUN_E2E=true;MODE=parallel”:” } 后来我有了这样的条件逻辑: stage('buildrelease'){ 什么时候{ 全部{ 分行“主” 不是{ 由“TimerTrigger”触发 } } } 但是,triggeredBy没有被激活。也就是说,即使在parameterizedCron运行时,“not trigg

我有一份詹金斯管道的工作,像这样:

触发器{
parameterizedCron(env.BRANCH_NAME==“master”?“0 12***%RUN_E2E=true;MODE=parallel”:”
}
后来我有了这样的条件逻辑:

stage('buildrelease'){
什么时候{
全部{
分行“主”
不是{
由“TimerTrigger”触发
}
}
}
但是,triggeredBy没有被激活。也就是说,即使在parameterizedCron运行时,“not triggered by timerTrigger”看起来也是真的

我从文档中得到了这个例子


我的问题是,如果我希望我的构建/发布阶段只在branch==master上执行,而在parameterizedCron执行期间不执行,我该怎么做?

您的问题是
parameterizedCron
不是
TimerTrigger
,只有常规
cron

关于您的需求,最简单的方法是添加一个参数并在
parameterizedCron
中进行设置:

triggers {
    parameterizedCron(env.BRANCH_NAME == "master" ? "0 12 * * * % RUN_E2E=true;MODE=parallel;SHOULD_BUILD_RELEASE=no" : "")
  }
然后,您可以执行以下操作:

    stage('Build Release') {
      when {
        allOf {
          branch 'master'
          expression { SHOULD_BUILD_RELEASE == 'yes' }
        }
      }
否则,您可能会以编程方式发现触发生成的原因,如果发现parameterizedCron触发了生成/发布部分,则会退出生成/发布部分。请参阅示例。对于
parameterizedCron
,相关部分如下:

timerCause = currentBuild.rawBuild.getCause(org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause)
if (timerCause) {
    echo "Build reason: Build was started by parameterized timer"
}
最后,您可以尝试使用确切的类,如下所示(我没有检查它,它可能有效,也可能无效):


您的问题是
parameterizedCron
不是
TimerTrigger
,只有常规的
cron

关于您的需求,最简单的方法是添加一个参数并在
parameterizedCron
中进行设置:

triggers {
    parameterizedCron(env.BRANCH_NAME == "master" ? "0 12 * * * % RUN_E2E=true;MODE=parallel;SHOULD_BUILD_RELEASE=no" : "")
  }
然后,您可以执行以下操作:

    stage('Build Release') {
      when {
        allOf {
          branch 'master'
          expression { SHOULD_BUILD_RELEASE == 'yes' }
        }
      }
否则,您可能会以编程方式发现触发生成的原因,如果发现parameterizedCron触发了生成/发布部分,则会退出生成/发布部分。请参阅示例。对于
parameterizedCron
,相关部分如下:

timerCause = currentBuild.rawBuild.getCause(org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause)
if (timerCause) {
    echo "Build reason: Build was started by parameterized timer"
}
最后,您可以尝试使用确切的类,如下所示(我没有检查它,它可能有效,也可能无效):


谢谢!您的最后一个选项对我来说似乎最优雅。这是否为您确认获得了正确的类名?您需要使用最后一个选项进行试错路径。谢谢!您的最后一个选项对我来说似乎最优雅。这是否为您确认获得了正确的类名?您需要使用最后一个选项进行试错路径.