如何检查构建是由计时器触发的还是由用户触发的?
How can I check whether the build is triiggered by timer or by the user?
如何检查构建是由计时器触发的还是由用户触发的。
我有一个计划 运行 的构建,有时我也 运行 手动构建它。我可以从一个变量或同一个 运行 中的某个东西中找出谁启动了 运行 吗?
您可以在 Jenkins 控制台输出中查看这些信息。
看控制台输出
第一行将是:
由用户 xxx 启动(如果有人启动它)
或
由 SCM 更改启动(如果版本控制中的更改触发了它)
或
由计时器启动(如果已安排)
有 Jenkins plugin 可以让您识别构建的触发方式等。
在上面 link 的功能部分您可以看到:
Build Cause Run
the build step depending on the cause of the build e.g. triggered by timer, user, scm-change,...
我们可以使用 "BUILD_CAUSE" 变量来获取有关谁发起 运行
的信息
正如@Bachu 已经回答的那样,构建原因在 ${BUILD_CAUSE} 环境变量中可用。
此外,每种触发器类型都有相应的环境变量,可以解释为布尔值。
对于由计时器触发的构建,它是 ${BUILD_CAUSE_TIMERTRIGGER},对于由计时器触发的构建,它将设置为 true。
如果使用pipeline 2.0,可以使用:
if(manager.logContains("Started by timer")){
echo "This build was triggered by a timer."
}
另一个解决方案是使用 user build vars plugin:
def buildUser
wrap([$class: 'BuildUser']) {
buildUser = env.BUILD_USER
}
buildUser
将在手动触发管道时包含用户名,否则为空。
如果您有共享管道库,请创建一个文件startedByTimer.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
}
如何检查构建是由计时器触发的还是由用户触发的。
我有一个计划 运行 的构建,有时我也 运行 手动构建它。我可以从一个变量或同一个 运行 中的某个东西中找出谁启动了 运行 吗?
您可以在 Jenkins 控制台输出中查看这些信息。
看控制台输出
第一行将是:
由用户 xxx 启动(如果有人启动它)
或
由 SCM 更改启动(如果版本控制中的更改触发了它)
或
由计时器启动(如果已安排)
有 Jenkins plugin 可以让您识别构建的触发方式等。
在上面 link 的功能部分您可以看到:
Build Cause Run the build step depending on the cause of the build e.g. triggered by timer, user, scm-change,...
我们可以使用 "BUILD_CAUSE" 变量来获取有关谁发起 运行
的信息正如@Bachu 已经回答的那样,构建原因在 ${BUILD_CAUSE} 环境变量中可用。 此外,每种触发器类型都有相应的环境变量,可以解释为布尔值。 对于由计时器触发的构建,它是 ${BUILD_CAUSE_TIMERTRIGGER},对于由计时器触发的构建,它将设置为 true。
如果使用pipeline 2.0,可以使用:
if(manager.logContains("Started by timer")){
echo "This build was triggered by a timer."
}
另一个解决方案是使用 user build vars plugin:
def buildUser
wrap([$class: 'BuildUser']) {
buildUser = env.BUILD_USER
}
buildUser
将在手动触发管道时包含用户名,否则为空。
如果您有共享管道库,请创建一个文件startedByTimer.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
}