#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