Как определить, когда многоотраслевое задание было запущено по расписанию cron?

#jenkins #jenkins-pipeline #jenkins-plugins #jenkins-groovy

#дженкинс #дженкинс-конвейер #дженкинс-плагины #дженкинс-groovy

Вопрос:

Я могу запускать задания главной ветки ежечасно следующим образом:

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

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

Но мне нужно какое-то конкретное поведение для этого ежечасного запуска — например, только выполнение определенных этапов для ежечасного запуска с запуском cron.

Есть ли какой-либо способ определить, было ли многоотраслевое задание запущено по расписанию cron изнутри конвейера?

Ответ №1:

currentBuild.getBuildCauses() должно сработать.

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

Комментарии:

1. это работает? какова «причина» для задания cron? так ли это currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause') ?

2. Это или триггер. Cron ( javadoc.jenkins.io/hudson/triggers/package-summary.html ). Я не использовал ни то, ни другое, поэтому вам нужно попробовать оба (или просто распечатать весь список причин)

3. Если триггер a crone, чем currentBuild.getBuildCauses даст TimerTrigger