我創建了一個jenkins管道,它從scm中拉取管道腳本。
我將分支說明符設置爲'all
',因此它基於對任何分支的任何更改。在Jenkins Jenkinsfile中獲取git分支名稱
如何從Jenkinsfile訪問導致此構建的分支名稱?
一切我都試過了回聲除了空
sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
這始終是master
。
我創建了一個jenkins管道,它從scm中拉取管道腳本。
我將分支說明符設置爲'all
',因此它基於對任何分支的任何更改。在Jenkins Jenkinsfile中獲取git分支名稱
如何從Jenkinsfile訪問導致此構建的分支名稱?
一切我都試過了回聲除了空
sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
這始終是master
。
如果您的管道有jenkins文件,請檢查您是否在執行時在您的environment variables中看到了您的分支名稱。
你可以打印出來:
pipeline {
agent any
environment {
DISABLE_AUTH = 'true'
DB_ENGINE = 'sqlite'
}
stages {
stage('Build') {
steps {
sh 'printenv'
}
}
}
}
然而,PR 91表明分支名稱在某些管道配置僅僅定義:
切換到多分支管道允許我訪問分支名稱。不建議使用常規管道。
是的,閱讀https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/91,你應該在'BRANCH_NAME'中看到它。 – VonC
一位同事告訴我使用scm.branches[0].name
,它工作。我把它包在我Jenkinsfile功能:
def getGitBranchName() {
return scm.branches[0].name
}
謝謝,這很有幫助。看起來它不在我的環境變量中。是否有可能暴露導致構建的分支? –