[英]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_NAME
和CHANGE_ID
環境變量來檢測拉取請求。 當您從分支運行多分支管道構建時(在創建拉取請求之前),將設置以下環境變量:
env.BRANCH_NAME
設置為存儲庫分支名稱(例如develop
),env.CHANGE_BRANCH
為null
,env.CHANGE_ID
為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-")
}
}
在聲明式管道中,您還可以使用when
指令中的內置條件changeRequest
來確定分支是否與拉取請求相關聯。
stage('package') {
when {
changeRequest()
}
//create deployable package
}
您還可以檢查拉取請求是否針對特定分支:
stage('package') {
when {
changeRequest target: 'master'
}
//create deployable package
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.