Не удается прочитать GIT commitId, ветвь и URL из переменных среды Jenkins

#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}" Отображается как null

2. Я использую обычное задание конвейера, а не конвейер с несколькими ответвлениями. есть ли какой-либо способ доступа к переменным GIT в обычном задании конвейера?

3. как прочитать блок проверки, определенный в скрипте конвейера, чтобы получить сведения о GIT (CommitId, ветке, репозитории) в init.gradle

Ответ №2:

Я мог бы получить имя ветки GIT в init.gradle, используя приведенный ниже код.

  def branchStdOut = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'name-rev', '--name-only', 'HEAD'
        standardOutput = branchStdOut
    }