Jenkins管道确定分支是否用于Bitbucket拉取请求

Jenkins管道确定分支是否用于Bitbucket拉取请求,jenkins,jenkins-pipeline,bitbucket,devops,Jenkins,Jenkins Pipeline,Bitbucket,Devops,我在用詹金斯和他的同事 一切都很好,但我希望能够运行/排除管道中的某些阶段,这取决于分支是否与拉请求关联,例如: pipeline { stages { stage('build') { //compile } stage('package') { when { environment name: 'IS_PULL_REQUEST', value: 'true' } //create

我在用詹金斯和他的同事

一切都很好,但我希望能够运行/排除管道中的某些阶段,这取决于分支是否与拉请求关联,例如:

pipeline {
  stages {
    stage('build') {
      //compile
    }    
    stage('package') {
      when {
        environment name: 'IS_PULL_REQUEST', value: 'true'
      }      
      //create deployable package
    }
  }
}
Jenkins知道分支何时用于PR,因为它将源与目标合并,并在“多分支管道”页面上的“请求”文件夹中显示分支


管道中是否有可用于排除/包括阶段的环境变量?

您可以使用
分支机构名称
更改ID
环境变量来检测请求。从分支运行多分支管道生成时(在创建拉请求之前),将设置以下环境变量:

  • env.BRANCH\u NAME
    设置为存储库分支名称(例如
    develope
  • env.CHANGE\u分支
    null
  • env.CHANGE\u ID
    null
但一旦创建拉取请求,则:

  • env.BRANCH\u NAME
    设置为PR-\d+名称(例如
    PR-11
  • env.CHANGE\u BRANCH
    设置为真实的分支名称(例如
    develope
  • env.CHANGE\u ID
    设置为拉取请求ID(例如
    11
我在管道中使用以下
条件来检测拉动请求:

什么时候{
表情{
//对于拉取请求为True,否则为false。
环境更改\u ID和环境分支\u名称.startsWith(“PR-”)
}
}

在声明性管道中,您还可以使用
when
指令中的内置条件
changeRequest
来确定分支是否与请求关联

stage('package') {
  when {
    changeRequest()
  }      
  //create deployable package
}
您还可以检查拉取请求是否针对特定分支:

stage('package') {
  when {
    changeRequest target: 'master'
  }      
  //create deployable package
}