Jenkins任务失败后Active Choice Parameter自动变为String Parameter问题排查
Jenkins参数类型异常问题
问题现象
我创建了一个参数化Jenkins任务,包含两个Active Choice Parameter:
- 第二个为响应式参数,依赖第一个参数的选择结果
- 两个参数均通过Groovy脚本动态生成选项值
但任务执行失败后,这两个Active Choice Parameter会自动变为String Parameter——失败前是带选项的选择框,失败后变成了普通文本输入框。
相关流水线代码
pipeline { agent any parameters { string(name: 'Repository', defaultValue: '') string(name: 'Branch', defaultValue: '') } stages { stage('Input Validation') { steps { script { if (!params.Repository || !params.Branch) { error "Repository and Branch parameters must be selected!" } } } } } }
已尝试的操作
- 先后使用Active Choices Jenkins Plugin 2.8.1和2.8.6版本,问题均复现
- 改用Scriptler替代直接在任务配置中编写Groovy脚本,问题依旧
可能的原因
- 流水线参数定义覆盖UI配置:流水线代码里显式声明了
Repository和Branch为string类型参数,而UI配置的是Active Choice类型。当任务执行失败后,Jenkins可能会以流水线代码中的参数定义覆盖UI里的配置,导致Active Choice被重置为String类型。 - Active Choices插件的持久化bug:该插件在处理任务失败后的参数配置持久化时存在问题,尤其是响应式参数场景下,无法正确保存参数的特殊类型配置,最终降级为基础的String类型。
- Jenkins核心与插件版本不兼容:如果当前使用的Jenkins核心版本和Active Choices插件版本不匹配,可能会导致参数配置在任务状态变更(如失败)时出现异常覆盖。
- 参数序列化异常:Jenkins在任务执行失败后会重新序列化参数配置,但Active Choice参数的特殊属性(如Groovy脚本、依赖关系)未被正确序列化,导致系统默认用String类型替代。
内容的提问来源于stack exchange,提问作者Rath256bits
相关产品推荐
相关产品推荐

