Выполнение сценария перед всеми в декларативном Jenkinsfile для использования плагина Extended Choice Parameter - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь запустить скрипт, который создает экземпляр переменной параметра расширенного выбора, чтобы использовать ее в разделе декларативных свойств jenkinsfile, но я не смог запустить скрипт в jenkinsfile без шага.Я не хочу делать это как шаг ввода или как сценарий конвейера.

Итак, я запускаю его, делая сначала шаг узла, а затем шаг конвейера, например:

import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition

node('MyServer') {

    try {
        def multiSelect = new ExtendedChoiceParameterDefinition(...)   

        properties([ parameters([ multiSelect ]) ])
    }
    catch(error){
        echo "$error"
    }
}

pipeline {

    stages {
        ....
    }
}

И волшебным образом это работает!с оговоркой, только если я запускал сборку раньше только с блоком конвейера.

Итак, есть ли лучший способ запустить предыдущий скрипт в конвейер?чтобы иметь возможность создать объект для свойств или другое место за пределами шагов для встраивания блока скрипта?

1 Ответ

0 голосов
/ 08 января 2019

Я бы предпочел перейти к блоку параметров в конвейере .

Директива параметров предоставляет список параметров, которые пользователь должен предоставить при запуске конвейера.Значения этих пользовательских параметров доступны для шагов конвейера через объект params, см. Пример для его конкретного использования.

pipeline {
    agent any
    parameters {
        string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')

        text(name: 'BIOGRAPHY', defaultValue: '', description: 'Enter some information about the person')

        booleanParam(name: 'TOGGLE', defaultValue: true, description: 'Toggle this value')

        choice(name: 'CHOICE', choices: ['One', 'Two', 'Three'], description: 'Pick something')

        password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'Enter a password')

        file(name: "FILE", description: "Choose a file to upload")
    }
    stages {
        stage('Example') {
            steps {
                echo "Hello ${params.PERSON}"

                echo "Biography: ${params.BIOGRAPHY}"
                echo "Toggle: ${params.TOGGLE}"

                echo "Choice: ${params.CHOICE}"

                echo "Password: ${params.PASSWORD}"
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...