簡體   English   中英

Jenkins 管道確定分支是否用於 Bitbucket 拉取請求

[英]Jenkins pipeline determine if a branch is for Bitbucket pull request

我將 Jenkins 與Bitbucket 分支源插件一起使用。

一切都很好,但我希望能夠根據分支是否與拉取請求相關聯來運行/排除管道中的某些階段,例如:

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

Jenkins 知道該分支何時用於 PR,因為它將源與目標合並,並且還在多分支管道頁面的拉取請求文件夾中顯示該分支。

我可以在管道中使用環境變量來排除/包含階段嗎?

您可以使用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-")
    }
}

在聲明式管道中,您還可以使用when指令中的內置條件changeRequest來確定分支是否與拉取請求相關聯。

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

您還可以檢查拉取請求是否針對特定分支:

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

請參閱https://jenkins.io/doc/book/pipeline/syntax/#when

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM