如何检查拉出请求是否触发了管道

时间:2016-12-19 19:10:05

标签: jenkins jenkins-pipeline

我正在使用Jenkins管道使用GitHub Organization插件构建Pull Requests分支。

我可以很好地构建它们,但我想避免一些步骤(比如发布工件)。检查git的当前分支为我提供了PR的目标,因为PR分支在尝试构建之前被合并到目标中。

如何检查构建是从PR vs而不是常规分支构建启动的?

3 个答案:

答案 0 :(得分:7)

至少在Jenkins 2.16 env.BRANCH_NAME上,源分支不是目标分支。你可以这样做:

if (env.BRANCH_NAME == "master") {
  sh "./publish.sh"
}

其他可能有用的环境变量是CHANGE_*个变量。但是,我找不到任何关于这些的文档,所以它们将来可能会改变。

CHANGE_AUTHOR='me'
CHANGE_ID='6'
CHANGE_TARGET='master'
CHANGE_TITLE='Update README.md'
CHANGE_URL='https://github.com/test-org/test-repo/pull/6'

答案 1 :(得分:2)

要专门检测GitHub拉取请求,可以使用以下方法:

  script {
    if (env.BRANCH_NAME == 'master') {
      sh 'make'
    } else if (env.BRANCH_NAME.startsWith('PR')) {
      // do actions for pull request
    } else {
      // some other branch
    } 
  }

当然,如果您希望在主存储库中拥有以PR开头的分支,那将是不可靠的。这样做的好处是script不仅可以在post中使用,而且还可以在stages中使用,这很有用,因为when中不允许post。如果您不关心它,那么值得研究when指令。 CloudbeesJenkins中有一些示例文件。

答案 2 :(得分:1)

环境变量CHANGE_ID仅在通过“拉取请求”检查触发构建时存在。

  

对于与某种变更请求相对应的多分支项目,它将被设置为变更ID,例如拉取请求号(如果支持);否则未设置。