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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:15:04