Не получается значение плагина с номером версии в Jenkins - PullRequest
0 голосов
/ 13 сентября 2018

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

pipeline {
    agent any

    environment {
        VERSION = VersionNumber projectStartDate: '', versionNumberString: '${BUILD_YEAR}.${BUILD_MONTH}.${BUILDS_TODAY}.${BUILD_NUMBER}', versionPrefix: 'v1.', worstResultForIncrement: 'SUCCESS'
    }

    stages {
        stage('Version Update'){
            steps{
                echo '${VERSION}'
                writeFile file: 'version.ini', text: '%VERSION%'
            }
        }
    }
}

Я пытался $ {VERSION},% VERSION напечатать номер версии, но он всегда печатал то, что внутри echo, текст внутри шага writeFile. (например,% VERSION%)

Я могу увидеть версию в боковом меню с форматом, который я использовал.

enter image description here

1 Ответ

0 голосов
/ 13 сентября 2018

В groovy строки, использующие одинарные кавычки ', не получают с интерполяцией . Вместо этого вы должны использовать двойные кавычки и использовать $ перед каждой переменной, которую хотите заменить (если вы хотите сохранить $ в строке, вам нужно экранировать ее с \).

Для writeFile это конвейерная команда, поэтому она работает как master на мастере jenkins, а не на узле сборки. Вот почему вы должны рассматривать это как таковое (двойные кавычки и $). трубопровод { агент любой

    environment {
        VERSION = VersionNumber projectStartDate: '', versionNumberString: "${BUILD_YEAR}.${BUILD_MONTH}.${BUILDS_TODAY}.${BUILD_NUMBER}", versionPrefix: 'v1.', worstResultForIncrement: 'SUCCESS'
    }

    stages {
        stage('Version Update') {
            steps {
                echo "${VERSION}"
                writeFile file: 'version.ini', text: "$VERSION"
            }
        }
    }
}

Примечание: я не использую плагин номера версии, поэтому я не смог протестировать этот точный код

...