Для запуска конвейера его параметры должны быть полностью определены до запуска конвейера.
Чтобы конвейер проанализировал выходные данные ls /home
, он должен быть запущен и выделите узел и рабочее пространство, что может произойти только через после запуска конвейера.
Таким образом, вы попадаете в какую-то проблему с куриным яйцом, когда вам нужно запустить некоторый код перед запуском конвейера, но вы не можете запустить конвейер до того, как запустите этот код.
Итак, ваша проблема сводится к тому, «Как я могу запустить какой-нибудь произвольный Groovy сценарий перед тем, как запустить конвейер? "
Для этого есть две опции:
Плагин ActiveChoice позволяет определить параметр, который возвращает скрипт. Затем Дженкинс запустит скрипт (не забудьте одобрить его), чтобы показать вам страницу «Построить с параметрами». Отладка это общеизвестно сложно, но это может go на большую длину.
В качестве альтернативы, вы можете запустить сценарий конвейера, прежде чем запустить декларативный (основной), как описано например, в этот ответ . Это может выглядеть примерно так:
def my_choices_list = []
node('master') {
stage('prepare choices') {
// read the folder contents
def my_choices = sh script: "ls -l /home", returnStdout:true
// make a list out of it - I haven't tested this!
my_choices_list = my_choices.trim().split("\n")
}
}
pipeline {
parameters {
choiceParam('OPTION', my_choices_list)