Как добавить ArrayList во входные логические параметры

#jenkins #groovy

#Дженкинс #groovy

Вопрос:

я хочу создать динамические логические параметры:

 pipeline {
    agent { label 'master' }
    stages {
        stage('load stage'){
         steps{
            script{
            def listParam =[]
            listParam.add(booleanParam(name: 'a', defaultValue:false ))
            listParam.add(booleanParam(name: 'b', defaultValue:false ))
            listParam.add(booleanParam(name: 'c', defaultValue:false ))
              def userId = input  message: 'Please select a or b or c ',
              ok : 'RUN',id :'userId',
              parameters(listParam)
            echo "userId ${userId}"
            }
          }
        } 
    }
}
  

и журнал консоли возвращает это :

java.lang.Исключение IllegalArgumentException: ожидаемые именованные аргументы, но получено [{сообщение=Пожалуйста, выберите a, b или c, ok=ВЫПОЛНИТЬ, id=идентификатор пользователя}, @parameters(=[@booleanParam(name=a,defaultValue=false), @booleanParam(name=b,defaultValue=false), @booleanParam(name=b,defaultValue=false), @booleanParam(name=c,defaultValue=false)])] в org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java: 588) в org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java: 526)

Ответ №1:

Согласно ref-doc, вы хотите передать свой listParam как часть карты с ключом parameters :

 def listParam = [ booleanParam(name: 'a', defaultValue:false ),
                  booleanParam(name: 'b', defaultValue:false ),
                  booleanParam(name: 'c', defaultValue:false ), ]

def userId = input  message: 'Please select a or b or c ',
                    ok : 'RUN',id :'userId',
                    parameters:listParam
  

Комментарии:

1. если a, b и c генерируются динамически. теперь, как я могу использовать логические параметры a или b или c. я использую синтаксис —> userid[0], но это неверно

2. задайте другой вопрос, добавьте к нему соответствующую информацию

3. если вы хотите получить какой-либо элемент списка, вы можете использовать этот код для (элемент в идентификаторе пользователя) { echo » ${item.getKey()} $ {item.GetValue()}» }

Ответ №2:

Создайте список объектов booleanParam и добавьте элементы, которые вы хотите Пример:

def listParam = [booleanParam(имя: «Все»)]

     for (product in globalVariables.productsList){
        listParam.add(booleanParam(name: "$product"))
    }
  

def USER_INPUT = входное сообщение: ‘Пользовательский ввод’, ok: ‘Start’, параметры: listParam