You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins声明式流水线多选参数遍历输出单个字符如何修复

问题原因

extendedChoice 多选参数返回的是用配置的分隔符拼接的字符串,而非节点名数组。直接对字符串执行for循环遍历,会按单个字符迭代,因此输出的是单字符而非完整节点名。

修复方案
  • 先将返回的字符串按分隔符,拆分为数组,同时过滤空值、去除节点名前后多余空格,避免未选择节点或输入有空格时出现异常
  • 遍历拆分后的数组即可得到完整节点名

修复后的遍历代码

def nodeList = nodes.split(',').collect { it.trim() }.findAll { it }
for (node in nodeList) {
    echo node
}
扩展:选中节点并行执行操作示例

如果需要后续在选中的机器上并行执行任务,可以参考如下声明式流水线写法:

pipeline {
    agent any
    parameters {
        extendedChoice(
            name: 'nodes',
            type: 'PT_CHECKBOX',
            multiSelectDelimiter: ',',
            // 替换为你的实际节点选项
            options: 'node-01,node-02,node-03,node-04'
        )
    }
    stages {
        stage('并行执行节点任务') {
            steps {
                script {
                    def nodeList = params.nodes.split(',').collect { it.trim() }.findAll { it }
                    // 生成并行任务集合
                    def parallelTasks = nodeList.collectEntries { nodeName ->
                        ["运行在节点${nodeName}" : {
                            node(nodeName) {
                                stage("节点${nodeName}任务") {
                                    echo "当前执行节点:${nodeName}"
                                    // 此处填写你要执行的具体操作
                                    sh 'hostname'
                                }
                            }
                        }]
                    }
                    // 触发所有并行任务
                    parallel parallelTasks
                }
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Epligam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:51:03