Получить имя ветки git в Дженкинс Дженкинсфайл
Я создал конвейер Дженкинса, и он тянет сценарий конвейера из scm.
Я установил спецификатор ветви в 'all
', поэтому он основывается на любом изменении любой ветви.
как получить доступ к имени ветви, вызывающей эту сборку из файла Jenkinsfile?
все, что я пробовал эхо из null, кроме
sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
который всегда master
.
4 ответов
Если у вас есть файл jenkinsfile для вашего конвейера, проверьте, видите ли вы во время выполнения свое имя ветви в своем переменные среды.
вы можете распечатать их с:
pipeline {
agent any
environment {
DISABLE_AUTH = 'true'
DB_ENGINE = 'sqlite'
}
stages {
stage('Build') {
steps {
sh 'printenv'
}
}
}
}
однако, PR 91 показывает, что имя ветви задается только в определенных конфигурациях конвейера:
- Филиала Условный (см. groovy script)
- параллельные ветви трубопровода (как видно из OP)
используйте многозаходный конвейер.. не трубопровод
в моем сценарии..
stage('Build') {
node {
echo 'Pulling...' + env.BRANCH_NAME
checkout scm
}
}
дает...
Pulling...master
переход на производство многофилиальных позволило мне получить доступ к имени филиала. Регулярный трубопровод не был рекомендован.
коллега сказал мне, чтобы использовать scm.branches[0].name
и это сработало. Я завернул его в функцию в моем Jenkinsfile:
def getGitBranchName() {
return scm.branches[0].name
}