如何在Jenkins/Groovy中实现参数输入转JSON输出?
Jenkins Groovy流水线参数转指定格式JSON实现方案
核心实现思路
利用Groovy内置的groovy.json.JsonBuilder工具,先将Jenkins流水线参数映射为目标结构的Map对象,再直接转换为格式化后的JSON字符串,无需额外依赖。
示例实现代码
假设你的流水线参数配置如下:
- Choice类型参数:
DEPLOY_ENV,可选值dev/test/prod - String类型参数:
APP_NAME(应用名称)、VERSION(应用版本)
期望输出的JSON格式:
{ "deployment": { "environment": "dev", "application": { "name": "user-service", "version": "v1.2.3" } } }
对应的流水线Groovy代码:
pipeline { agent any // 已配置的参数(此处仅作参考) parameters { choice(name: 'DEPLOY_ENV', choices: ['dev', 'test', 'prod'], description: '选择部署环境') string(name: 'APP_NAME', defaultValue: '', description: '必填:应用名称') string(name: 'VERSION', defaultValue: '', description: '必填:应用版本号') } stages { stage('生成指定格式JSON') { steps { script { // 1. 参数合法性校验(可选,确保必填参数不为空) def requiredParams = [params.APP_NAME, params.VERSION] if (requiredParams.any { it == null || it.trim().isEmpty() }) { error "APP_NAME和VERSION为必填参数,不能为空" } // 2. 构造与目标JSON结构一致的Map def targetConfig = [ deployment: [ environment: params.DEPLOY_ENV, application: [ name: params.APP_NAME.trim(), version: params.VERSION.trim() ] ] ] // 3. 转换为格式化的JSON字符串 def jsonResult = new groovy.json.JsonBuilder(targetConfig).toPrettyString() // 4. 输出或持久化JSON echo "生成的配置JSON:\n${jsonResult}" writeFile file: 'deploy-config.json', text: jsonResult } } } } }
关键说明
- 参数获取:Jenkins流水线中所有配置的参数,均可通过
params.参数名直接访问 - 结构调整:如果需要修改输出JSON的结构,只需调整
targetConfig这个Map的键值对即可,完全匹配目标格式 - 空值处理:通过
trim()去除字符串参数的首尾空格,避免无效输入;必填参数校验可根据实际需求添加 - JSON工具:
JsonBuilder是Groovy标准库自带的工具,无需额外安装插件或依赖
内容的提问来源于stack exchange,提问作者Groovy_dummy
相关产品推荐
相关产品推荐

