Я новичок в Дженкинс/Девопс; Я следую этому примеру. Когда я локально делаю (из терминала):
git rev-parse --abbrev-ref HEAD
Я получаю текущее название ветки. Однако из Jenkinsfile в журналах я получаю:
HEAD
Некоторое время проводил исследования в Интернете и до сих пор не смог найти причину. Каковы потенциальные причины для этого результата?
дополнительные детали
В моем файле jenkinsfile я пытаюсь получить текущее имя ветки git (которое вызвало webhook) и затем передать его в команду 'git branch', поэтому код выглядит следующим образом:
pipeline {
agent {
label 'ubuntu'
}
stages {
stage('check') {
steps {
script {
env.GIT_BRANCH_NAME=sh(returnStdout: true, script: "git rev-parse --abbrev-ref HEAD").trim()
}
sh 'echo BRANCH_NAME ${GIT_BRANCH_NAME}'
git branch: GIT_BRANCH_NAME, credentialsId: '******', url: 'https://*****/*****/*****.git'
}
....
}
В соответствии
sh 'echo BRANCH_NAME ${GIT_BRANCH_NAME}'
Дает голову
Я нашел способ обойти это, используя git name-rev --name-only HEAD и изменил код скрипта так:
script {
env.GIT_BRANCH_PATH=sh(returnStdout: true, script: "git name-rev --name-only HEAD").trim()
env.GIT_BRANCH_NAME=GIT_BRANCH_PATH.split('remotes/origin/')[1]
}
Теперь я получил правильное название ветки и пошаговые шаги, но я предпочел бы менее хакерский способ делать вещи.
Каков наилучший метод для достижения того, чего я хочу достичь, используя лучшие практики?
PS Я не использую мульти-разветвленный конвейер, и требования были не использовать мульти-ветвление.