如何通过计时器或用户检查构建是否被触发?

时间:2015-12-10 06:27:20

标签: jenkins jenkins-plugins jenkins-workflow

如何通过计时器或用户检查构建是否被触发。

我有一个计划运行的构建,有时我也会手动运行它。我可以从一个变量或同一个运行的东西中找到谁开始运行。

8 个答案:

答案 0 :(得分:3)

Jenkins plugin允许您识别构建的触发方式。

在上面链接的功能部分,您可以看到:

  

构建原因运行   构建步骤取决于构建的原因,例如由计时器,用户,scm-change,...触发......

答案 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
}