Не получается значение плагина с номером версии в 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%)

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

1 ответ

Решение

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

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

    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"
            }
        }
    }
}

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

Другие вопросы по тегам