Как передать входные параметры как переменную в декларативном файле Jenkins?

Я пытаюсь добавить этап в наш конвейер jenkins, на котором пользователю будет предложено выбрать из последних 5 сборок для развертывания. Мне не удалось передать варианты выбора как переменную. Кто-нибудь знает как это сделать?

    stages {
        stage('User Input') {
            environment {
                jars = 'v1 v2 v3'
            }

            input {
                message "What are we deploying today?"
                ok "Deploy"
                id "tag_id"
                parameters {
                    choice(choices: ${jars}, description: 'Select a tag for this build', name: 'TAG')
                }
            }
            steps {
                echo "Deploying ${TAG}. Have a nice day."
            }
        }

Это вызывает исключение:

groovy.lang.MissingPropertyException: No such property: jars for class: WorkflowScript

Я также попытался заменить блок окружения блоком скрипта; блок скрипта в блоке шагов; и попробуйте choices: "sh 'ls /build/libs/*.jar", который предложил sh 'ls /build/libs/*.jar" в переключателе вместо выполнения команды.


person melis    schedule 08.08.2019    source источник
comment
попробуйте choices: "${jars}" или choices: env.jars. И вы должны использовать \n в качестве разделителя в jars = 'v1\nv2\nv3'   -  person yong    schedule 09.08.2019
comment
это, к сожалению, не работает. $ {jars} выдает исключение из-за отсутствия свойства, а env.jars вызывает исключение с нулевым указателем.   -  person melis    schedule 09.08.2019


Ответы (1)


Можешь попробовать

List<String> CHOICES = [];
pipeline {
    agent any
stages {
        stage('User Input') {


            steps {

                script {
                        CHOICES = ["tag1", "tag2", "tag3"];    
                        env.YourTag = input  message: 'What are we deploying today?',ok : 'Deploy',id :'tag_id',
                                        parameters:[choice(choices: CHOICES, description: 'Select a tag for this build', name: 'TAG')]
                        }           
                echo "Deploying ${env.YourTag}. Have a nice day."
            }
        }
}
}

Вывод

[Pipeline] {
[Pipeline] stage
[Pipeline] { (User Input)
[Pipeline] script
[Pipeline] {
[Pipeline] input
Input requested
Approved by Admin
[Pipeline] }
[Pipeline] // script
[Pipeline] echo
Deploying tag2. Have a nice day.
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
person Rahul L    schedule 12.08.2019