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

如何存储Jenkins不同Active Choice选项下的复选框选择状态?

Jenkins Active Choice 参数保留多选项选择状态方案

核心思路

通过新增隐藏参数存储所有选项的历史勾选记录,结合Groovy脚本在参数渲染时恢复之前的选择,在构建预处理时更新记录,实现切换Alpha选项时不丢失之前的勾选状态。


具体实现步骤

  • 新增隐藏存储参数
    添加一个Hidden Parameter(隐藏参数),命名为SELECTION_HISTORY,默认值设为{},专门用来存Alpha各选项对应的勾选结果。

  • 调整Alpha下拉参数
    Alpha的Active Choice脚本保持基础配置即可:

    return ['A', 'B']
    
  • 重写Numeric响应式复选框脚本
    替换原有的Numeric参数Groovy脚本,实现读取历史记录、恢复勾选状态的逻辑:

    import groovy.json.JsonSlurper
    import groovy.json.JsonBuilder
    
    def alphaChoice = bindings.get('Alpha')
    def historyStr = bindings.get('SELECTION_HISTORY') ?: '{}'
    def history = new JsonSlurper().parseText(historyStr)
    
    // 定义Alpha选项和对应Numeric选项的映射关系
    def optionMap = [
        'A': ['1', '2', '3'],
        'B': ['4', '5', '6']
    ]
    
    // 取出当前Alpha选项之前的勾选记录,没有就设为空列表
    def selectedValues = history[alphaChoice] ?: []
    
    // 生成带勾选状态的复选框选项
    return optionMap[alphaChoice].collect { value ->
        [value: value, selected: selectedValues.contains(value)]
    }
    
  • 添加构建预处理步骤更新历史
    在构建的第一个步骤添加Execute Groovy Script,用来更新存储的历史记录:

    import groovy.json.JsonSlurper
    import groovy.json.JsonBuilder
    
    def alpha = env.Alpha
    def numericSelections = env.Numeric.split(',') // 复选框选择会以逗号分隔的字符串返回
    def historyStr = env.SELECTION_HISTORY ?: '{}'
    def history = new JsonSlurper().parseText(historyStr)
    
    // 更新当前Alpha选项对应的勾选记录
    history[alpha] = numericSelections
    def updatedHistory = new JsonBuilder(history).toPrettyString()
    
    // 把更新后的记录写入环境变量,后续步骤直接用
    env.SELECTION_HISTORY = updatedHistory
    println "Updated selection history: ${updatedHistory}"
    
  • 构建中使用完整选择字典
    后续构建步骤里,直接调用env.SELECTION_HISTORY就能拿到格式为{A: [1, 2], B: [4, 5]}的JSON字符串,解析后即可按字典形式使用。


内容的提问来源于stack exchange,提问作者anon-explorer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:20:06