Jenkins 詹金斯:我怎么知道是自动进程还是用户触发了构建?

Jenkins 詹金斯:我怎么知道是自动进程还是用户触发了构建?,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,Jenkins中是否有一个环境变量告诉我构建是手动运行还是由轮询自动触发的 如果自动触发,我的管道就像一个符咒,但如果手动运行。。。它总是失败,所以我想我要编辑管道来检查构建是如何触发的。不幸的是,管道构建中没有设置变量env.build\u原因。 有关管道作业,请参见以下示例 if ( currentBuild.rawBuild.getCauses()[0].toString().contains('UserIdCause') ){ // do steps for manual tri

Jenkins中是否有一个环境变量告诉我构建是手动运行还是由轮询自动触发的


如果自动触发,我的管道就像一个符咒,但如果手动运行。。。它总是失败,所以我想我要编辑管道来检查构建是如何触发的。

不幸的是,管道构建中没有设置变量
env.build\u原因
。 有关管道作业,请参见以下示例

if ( currentBuild.rawBuild.getCauses()[0].toString().contains('UserIdCause') ){
    // do steps for manual trigger here
}

可以找到其他可能的原因进行比较。

在版本2.22(2018年11月2日)中,通过管道支持API插件发布了获取工作流运行原因的功能。JENKINS-41272要求提供该功能

在该版本中,向currentBuild全局变量添加了两个方法:

getBuildCauses

    Returns a JSON array of build causes for the current build

EXPERIMENTAL - MAY CHANGE getBuildCauses(String causeClass)

    Takes a string representing the fully qualified Cause class and returns a JSON array of build causes filtered by that type for the current build, or an empty JSON array if no causes of the specified type apply to the current build
见答案。 我复制粘贴在这里,因为这个问题首先显示在搜索结果中(不像)


另请参见
${YOUR_JENKINS_URL}/pipeline syntax/globals
,以获取currentBuild上可用的完整且最新的属性列表。

如果此属性包含在SCM JENKINS文件中,则会发生以下错误。不允许脚本使用方法org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild。这是有关的。您是否有任何解决方法或其他方法来推断原因的建议?本文将解释在这种情况下该怎么做。你需要以管理员的身份批准这个方法调用。谢谢Mohammad,我确实做到了。然而,这一行动导致詹金斯受到严重警告。它将此标记为安全漏洞。“已批准的签名可能已引入安全漏洞(建议清除)”。这就是为什么我希望有一种不同的方法来推导这个值。@MattR我相信唯一的其他选择是将它包装在插件中(非常小/容易),然后将它作为自己的方法公开给管道。可能有一些插件也以这种方式扩展了可用的构建信息。