Jenkins:我怎么知道自动进程或用户是否触发了构建?

时间:2017-06-19 13:47:13

标签: jenkins groovy jenkins-pipeline

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

如果自动触发,我的管道就像魅力一样,但是如果手动运行......总是会失败,所以我想我要编辑管道来检查构建是如何被触发的。

2 个答案:

答案 0 :(得分:8)

不幸的是,管道构建中未设置变量env.BUILD_CAUSE。 对于管道作业,请参见以下示例

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

可以找到其他可能的比较原因here

答案 1 :(得分:0)

获取工作流运行原因的功能已在版本2.22(2018年11月2日)中发布到Pipeline Supporting APIs Plugin。 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

请参阅答案https://stackoverflow.com/a/53342374/5955565。 我将其粘贴在此处,因为此问题首先出现在搜索结果中(与How to differentiate build triggers in Jenkins Pipeline不同)。

另请参阅${YOUR_JENKINS_URL}/pipeline-syntax/globals,以获取最新的currentBuild可用属性列表。