小编典典

Jenkins管道确定分支是否针对Bitbucket拉取请求

jenkins

我将Jenkins和Bitbucket分支源插件一起使用。

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

pipeline {
  stages {
    stage('build') {
      //compile
    }    
    stage('package') {
      when {
        environment name: 'IS_PULL_REQUEST', value: 'true'
      }      
      //create deployable package
    }
  }
}

Jenkins知道分支何时用于PR,因为它会将源与目标合并,并在多分支管道页面的pull request文件夹中显示分支。

我可以在管道中使用环境变量来排除/包含阶段吗?


阅读 320

收藏
2020-07-25

共1个答案

小编典典

您可以使用BRANCH_NAMECHANGE_ID环境变量来检测请求请求。从分支运行多分支管道构建时(在创建拉取请求之前),将设置以下环境变量:

  • env.BRANCH_NAME设置为存储库分支名称(例如develop),
  • env.CHANGE_BRANCHnull
  • env.CHANGE_IDnull

但是一旦创建拉取请求,则:

  • env.BRANCH_NAME设置为PR- \ d +名称(例如PR-11),
  • env.CHANGE_BRANCH设置为真实的分支名称(例如develop),
  • env.CHANGE_ID设置为拉取请求ID(例如11)。

when在管道中使用以下条件来检测请求请求:

when {
    expression {
        // True for pull requests, false otherwise.
        env.CHANGE_ID && env.BRANCH_NAME.startsWith("PR-")
    }
}
2020-07-25