在jenkins中,如何限制用户选择第一个默认元素以及扩展选择参数中的其他选项

yacmzcpb  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(157)

我有一个jenkins作业,带有多选扩展选择参数。参数中有元素列表。因此,我的要求是我希望允许用户选择多个参数,但不包括参数中的第一个元素。这意味着用户不能选择参数中具有其他元素的第一个元素。我正在使用jenkinsfile创建参数。

如上所示,用户不应该选择'无'与任何其他元素的参数。有人知道如何做到这一点吗?

mrphzbgm

mrphzbgm1#

我不认为你可以只使用Extended choice parameter。作为一种解决办法,你可以添加两个参数。第一个参数检查它是否是None,如果不是,你可以打开第二个参数。你可以使用Active Choice Parameter来完成这个任务。

properties([
    parameters([
        [$class: 'CascadeChoiceParameter', 
            choiceType: 'PT_MULTI_SELECT',
            description: 'Select a choice',
            filterLength: 1,
            name: 'choice1',
            referencedParameters: 'CHOICE',
            script: [$class: 'GroovyScript',
                fallbackScript: [
                    classpath: [], 
                    sandbox: true, 
                    script: 'return ["ERROR"]'
                ],
                script: [
                    classpath: [], 
                    sandbox: true, 
                    script: """
                        if (CHOICE == 'Yes') { 
                            return['Item1','Item2','Item3']
                        }
                        else {
                            return[]
                        }
                    """.stripIndent()
                ]
            ]
        ]
    ])
])

pipeline {
    agent any
    parameters {
        choice(name: 'CHOICE', description: "Do you have any choices?", choices: ["Yes", "None"])
    }
    stages {
        stage("Run Tests") {
            steps {
                sh "echo SUCCESS on ${params.CHOICE}"
            }
        }
    }
}

相关问题