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

Jenkins Input Step如何展示YAML值为复选框及报错解决

问题解决:Jenkins Input Step从YAML生成复选框的错误修复

错误原因分析

你遇到的MissingPropertyException核心是代码语法错误导致的,同时存在DSL参数格式问题:

  • results.push语句的括号位置错误,使得service变量暴露在方法调用外部,Groovy无法识别该变量
  • Jenkins流水线DSL参数缺少必要的逗号分隔、括号不匹配,破坏了语法结构
  • 描述字段末尾多了多余的括号

修正后的完整流水线代码

def inputResult = input(
    message: "Select a git tag",
    id: 'userinput',
    parameters: [[
        $class: "CascadeChoiceParameter", 
        choiceType: 'PT_CHECKBOX', 
        description: "keys",
        name: 'selected_keys',
        script: [
            $class: 'GroovyScript',
            fallbackScript: [
                classpath: [],
                script: 'return ["could not find the keys"]'
            ],
            script: [
                classpath: [],
                script: '''
                    def yaml = new groovy.yaml.YamlSlurper().parse(new File("output.yaml"))
                    def results = []
                    yaml.services.each { service ->
                        results.add("${service.name}:${service.value}")
                    }
                    return results
                '''
            ]
        ]
    ]]
)

// 打印用户选择结果验证流程
echo "Selected keys: ${inputResult.selected_keys}"

关键修正点说明

  1. 修复语法结构问题

    • 给所有DSL参数(message、id、parameters等)添加必要的逗号分隔
    • 移除description字段末尾多余的)
    • 修正集合元素添加语句:将错误的results.push(service.name + ":") + service.value)改为results.add("${service.name}:${service.value}"),用add更符合Groovy集合操作习惯
    • 修正参数列表的括号匹配:将}]改为]]
  2. 调整YAML读取逻辑
    在CascadeChoiceParameter的Groovy脚本上下文里,直接使用Jenkins流水线的readYaml步骤存在兼容性限制,改用Groovy原生的YamlSlurper读取文件,确保能正确解析工作空间中的output.yaml。

  3. 优化参数命名
    将参数名get the keys改为selected_keys,避免空格带来的潜在问题,后续获取用户选择结果更便捷。

验证步骤

  1. 确保output.yaml存在于Jenkins构建工作空间根目录,示例内容:
services:
-  name: "abc"
   value: "xyz"
-  name: "def"
   value: "uvw"
  1. 运行流水线,Input步骤会展示包含abc:xyz、def:uvw的复选框选项
  2. 选择后流水线会打印用户选择的结果,确认流程正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:17:24