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

2023-11-22

我将 Jenkins 与Bitbucket分支源插件.

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

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

Jenkins 知道分支何时用于 PR,因为它将源与目标合并,并且还在多分支管道页面上的拉取请求文件夹中显示分支。

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


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

  • env.BRANCH_NAME设置为存储库分支名称(例如develop),
  • env.CHANGE_BRANCH is null,
  • env.CHANGE_ID is null.

但是一旦创建了拉取请求,那么:

  • 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-")
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 管道确定分支是否用于 Bitbucket 拉取请求 的相关文章

随机推荐