#git #jenkins #environment-variables #jenkins-pipeline
#git #дженкинс #переменные среды #jenkins-конвейер
Вопрос:
Я получаю «нулевые» значения из приведенных ниже переменных, когда я получаю доступ из своего build.gradle. Значения GITSCM будут равны нулю только тогда, когда код клонируется в рабочую область Jenkins как часть этапа проверки git в Jenkinsfile.
System.getenv(‘GIT_BRANCH’)
System.getenv(‘GIT_COMMIT’)
System.getenv(‘GIT_URL’)
stage ('Check Out') {
steps {
echo 'Check-Out code from SCM'
echo "Git Name : ${env.APP_NAME}"
checkout([$class: 'GitSCM',
branches: [[name: '**/${BRANCH}']],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[
credentialsId: 'GITHUB_KEY' ,
url: "git@github.com:tools-org/${env.APP_NAME}"]]])
}
}
Не могли бы вы помочь, как прочитать блок проверки для извлечения сведений о GIT (CommitId, ветке, репозитории) в build.gradle?
Ответ №1:
Они должны быть доступны как env.BRANCH_NAME
, env.GIT_COMMIT_ID
и env.GIT_URL
соответственно.
Вы можете выполнить, например, sh "printenv | sort"
, чтобы увидеть все переменные.
Комментарии:
1. ..когда я его печатаю.
echo "${env.BRANCH_NAME}" echo "${env.GIT_COMMIT_ID}" echo "${env.GIT_URL}"
Отображается как null2. Я использую обычное задание конвейера, а не конвейер с несколькими ответвлениями. есть ли какой-либо способ доступа к переменным GIT в обычном задании конвейера?
3. как прочитать блок проверки, определенный в скрипте конвейера, чтобы получить сведения о GIT (CommitId, ветке, репозитории) в init.gradle
Ответ №2:
Я мог бы получить имя ветки GIT в init.gradle, используя приведенный ниже код.
def branchStdOut = new ByteArrayOutputStream()
exec {
commandLine 'git', 'name-rev', '--name-only', 'HEAD'
standardOutput = branchStdOut
}