首页 > 解决方案 > 如何在输入布尔参数中添加 ArrayList

问题描述

我想创建动态布尔参数:

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: 预期命名参数但得到 [{message=请选择 a 或 b 或 c, ok=RUN, id=userId}, @parameters(=[@booleanParam(name=a,defaultValue=false), @ booleanParam(name=b,defaultValue=false), @booleanParam(name=c,defaultValue=false)])] at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:588) at org.jenkinsci .plugins.workflow.cps.DSL.parseArgs(DSL.java:526)

标签: jenkinsgroovy

解决方案


根据ref-doc,您希望将您的listParam作为带有 key 的地图的一部分传递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

推荐阅读