如何通过计时器或用户检查构建是否被触发。
我有一个计划运行的构建,有时我也会手动运行它。我可以从一个变量或同一个运行的东西中找到谁开始运行。
答案 0 :(得分:3)
答案 1 :(得分:3)
我们可以使用“BUILD_CAUSE”变量来获取有关谁发起了运行的信息
答案 2 :(得分:1)
如果使用管道2.0,您可以使用:
if(manager.logContains("Started by timer")){
echo "This build was triggered by a timer."
}
答案 3 :(得分:1)
另一种解决方案是使用user build vars plugin:
def buildUser
wrap([$class: 'BuildUser']) {
buildUser = env.BUILD_USER
}
手动触发管道时, buildUser
将包含一个用户名,否则为null。
答案 4 :(得分:0)
您可以在Jenkins控制台输出中检查这些信息。
答案 5 :(得分:0)
查看控制台输出
第一行将是:
由用户xxx启动(如果人类启动它)
或
由SCM更改启动(如果版本控制中的更改触发了它)
或
由计时器启动(如果已安排)
答案 6 :(得分:0)
由于@Bachu已经回答了构建原因,可以在$ {BUILD_CAUSE}环境变量中找到。 此外,对于每个触发器类型是对应的环境变量,可以解释为布尔值。 对于由计时器触发的构建,它是$ {BUILD_CAUSE_TIMERTRIGGER},对于由计时器触发的构建,它将被设置为true。
答案 7 :(得分:0)
如果您拥有共享的管道库,则创建一个文件startsByTimer.groovy:
@NonCPS
def call() {
boolean startedByTimer = false
def buildCauses = currentBuild.rawBuild.getCauses()
for (buildCause in buildCauses) {
if ("${buildCause}".contains("hudson.triggers.TimerTrigger\$TimerTriggerCause")) {
startedByTimer = true
}
}
return startedByTimer
}