Как я могу прочитать тег GIT из текущей ветви в переменную? - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу использовать теги git в моем декларативном конвейере Jenkins.Мой Jenkinsfile выглядит следующим образом

pipeline {
    agent any
    stages {
        stage('Setup') {
            steps {
                script {
                    env.MY_GIT_TAG = sh(returnStdout: true, script: 'git tag -l --points-at HEAD')
                    // ... 
                }
            }
        }
        stage('Build'){
            // build my code etc ....
        }
        stage('Publish') {
            // push code somewhere depending on tag
            sh "curl -X POST --upload-file ./MyDeployable https://someserver/uri/MyDeployable-${env.MY_GIT_TAG}"
        }
    }
}

Но переменная окружения MY_GIT_TAG всегда была пустой.После некоторого расследования я заметил это в моих журналах Jenkins: git fetch --no-tags --progress ...

Есть ли способ сказать Jenkins, чтобы пропустить аргумент --no-tags?

Поскольку я не знаю заранее, как зафиксироватьпомечен я хочу извлечь тег из Git и использовать его в качестве переменной.Таким образом, решение в этом вопросе здесь нежизнеспособно.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Как упомянуто Тай Ли, здесь есть описание двух возможных решений здесь

Решение 1)

Вы можете создать пользовательский заказв вашем Jenkinsfile, в котором для noTags установлено значение false.

checkout([
    $class: 'GitSCM',
    branches: scm.branches,
    doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
    extensions: [[$class: 'CloneOption', noTags: false, shallow: false, depth: 0, reference: '']],
    userRemoteConfigs: scm.userRemoteConfigs,
 ])

Решение 2)

Добавьте запись «Расширенное поведение клонирования» в поведении исходного кода ветви вВеб-интерфейс Jenkins.Он также может быть установлен на уровне организации / группы для плагинов GitHub / Bitbucket и др.

0 голосов
/ 17 декабря 2018

Как уже упоминалось в комментариях, sh ничего не возвращает.Вы можете сделать env.MY_GIT_TAG = sh(returnStdout: true, script: 'git tag -l --points-at HEAD').trim(), чтобы вернуть стандартный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...