#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