通过jenkins-cli.jar向Jenkins Pipeline传递extendedChoice类型的参数

66次阅读
没有评论

问题描述

在Jenkins Pipeline中定义了一个包含复选框多选参数的声明性流水线。他想要通过Jenkins CLI调用该流水线,并将传递给NAMES参数的值用于选定复选框。然而,在尝试通过Jenkins CLI客户端调用流水线时,却无法正确传递参数值,导致无法实现预期效果。

解决方案

请注意以下操作可能因版本差异而有所不同。
在 Jenkins Pipeline 中使用 extendedChoice 类型的参数时,需要注意参数的传递方式。以下是解决方案示例,帮助你正确传递参数值并实现预期效果。

步骤1:修改Jenkins Pipeline

在Jenkins Pipeline的参数定义中,使用 extendedChoice 类型的参数时,将选项保存为一个字符串。因此,在Pipeline中获取参数值后,需要进行解析操作,将其分割成数组以便进一步处理。

pipeline {
    agent any
    parameters {
        extendedChoice(
            description: '',
            multiSelectDelimiter: ',',
            name: 'NAMES',
            quoteValue: false,
            saveJSONParameterToFile: false,
            type: 'PT_CHECKBOX',
            value: 'a,b,c', // 示例选项
            visibleItemCount: 3
        )
    }
    stages {
        stage('Run on all') {
            steps {
                script {
                    def arr = params.NAMES.tokenize(',') // 解析参数值为数组
                    arr.each { t ->
                        echo "${t}" // 在这里处理每个选项,可以根据需要进行操作
                    }
                }
            }
        }
    }
}

步骤2:使用Jenkins CLI调用Pipeline

使用以下命令调用Jenkins CLI,并传递参数值作为选定的复选框。在这里,我们假设你已经正确配置了Jenkins CLI客户端。

java -jar jenkins-cli.jar -s http://localhost:8080 -auth u:p build "Your Pipeline Name" -p NAMES="a,b,c"

这将调用Jenkins Pipeline,并将选项 “a”、”b” 和 “c” 传递给 NAMES 参数。

补充说明

上述解决方案中,我们首先修改了Jenkins Pipeline,将参数值解析为数组。然后,通过Jenkins CLI调用Pipeline时,使用逗号分隔的方式传递参数值。在Pipeline内部,你可以根据实际需求对参数值进行进一步处理。

请注意,具体操作可能因Jenkins版本而异,建议根据实际情况进行调整和测试。

以上操作将帮助你成功通过Jenkins CLI调用包含extendedChoice类型参数的Pipeline,并正确传递复选框的选定值。

正文完