Как передать входные значения в запланированное задание конвейера Jenkins? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть трубопровод Jenkins, у которого нет параметров сборки. Но имеет input шаблон внутри. Таким образом, когда задание запускается с использованием Build now, оно запускается и ожидает ввода пользователя через Input Requested, а параметры заполняются как варианты.

Это работает нормально, когда я запускаю вручную. Но я хочу включить значения по умолчанию для input переменной выбора, чтобы при запуске запланированного задания он не ожидал ввода пользователя (через Input Requested) и продолжал использовать значения по умолчанию.

My шаблон ввода выглядит следующим образом.

env.cluster_to_select = input(
                        id: 'cluster_to_select', message: 'Select a choice',
                        parameters: [
                                 choice(name: 'clusters',
                                       choices: env.list_files, //can take from populated string
                                       description: 'Based on cluster selection, nodes are shown'
                                        )
                        ]
                )

Как узнать, запущено ли задание через планировщик, и передать для ввода значения по умолчанию.

1 Ответ

2 голосов
/ 14 февраля 2020

Вы можете обернуть input в блок timeout, который сам должен быть в блоке try. Затем перехватите исключение, проверьте, истекло ли оно или было отменено пользователем, и выполните соответствующие действия с параметрами по умолчанию или прервите сборку.

env.cluster_to_select = try {
                            timeout(time: 120, unit: 'SECONDS') {
                                input(
                                    id: 'cluster_to_select', message: 'Select a choice',
                                    parameters: [
                                        choice(name: 'clusters',
                                            choices: env.list_files, //can take from populated string
                                            description: 'Based on cluster selection, nodes are shown'
                                            )
                                        ]
                                    )
                                }
                            }   catch(err) { // timeout reached or input aborted by user
                                def user = err.getCauses()[0].getUser()
                                if (user.toString() == 'SYSTEM') { // SYSTEM is timeout
                                    echo('Using default parameters')
                                } else {
                                    currentBuild.result = 'ABORTED'
                                    error("Pipeline aborted by: [${user}]")
                                }
                            }

См. Конвейер: как добавить шаг ввода , с тайм-аутом, который продолжается, если тайм-аут достигнут, используя значение по умолчанию .

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