【问题标题】:How to identify when a multibranch job has been triggered by a cron schedule?如何识别 cron 计划何时触发了多分支作业?
【发布时间】:2020-12-12 06:41:44
【问题描述】:

我可以像这样让我的主分支作业每小时运行一次:

String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""

pipeline {
  agent none
  triggers { cron(cron_string) }
  stages {
    // do something
  }
}

但我希望每小时运行一些特定的行为——比如只为每小时 cron 触发的运行运行某些阶段。

是否有任何方法可以确定多分支作业是否由管道内部的 cron 计划触发?

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy


    【解决方案1】:

    currentBuild.getBuildCauses() 应该可以工作。

    https://opensource.triology.de/jenkins/pipeline-syntax/globals#currentBuild

    【讨论】:

    • 这行得通吗? cron 工作的“原因”是什么?是currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause') 吗?
    • 这个或 Trigger.Cron (javadoc.jenkins.io/hudson/triggers/package-summary.html)。我也没有用过,所以你需要同时尝试(或者只打印整个原因列表)
    • 如果一个 crone 触发器比currentBuild.getBuildCauses 会给出TimerTrigger
    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2016-08-10
    • 1970-01-01
    相关资源
    最近更新 更多