在Linux系统中用Jenkins Pipeline处理JSON和YAML文件,核心是安装Pipeline Utility Steps插件并调用readJSON、readYaml、writeYaml等内置方法,所有操作必须在工作区(${WORKSPACE})内进行,支持文件读取与字符串解析,YAML缩进禁用Tab,JSON/YAML返回对象需clone后修改,文件不存在时会失败,建议用fileExists校验。

在Linux系统中用Jenkins Pipeline处理JSON和YAML文件,核心是安装并正确调用Pipeline Utility Steps插件提供的内置方法。这些操作必须在Jenkins工作区(workspace)内进行,不能读写外部路径或网络位置。
安装与前提确认
确保已安装Pipeline Utility Steps插件:
- 进入Jenkins → “Manage Jenkins” → “Manage Plugins” → “Available”标签页
- 搜索“Pipeline Utility Steps”,勾选并点击“Install without restart”
- 安装完成后,无需重启Jenkins即可在Pipeline脚本中直接使用
readJSON、readYaml等步骤 - 确认待读取的JSON/YAML文件已存在于当前构建的工作区路径下(如
package.json、config.yaml)
读取JSON文件并提取关键字段
适用于解析package.json、manifest.json等元数据文件,常用于版本号提取或环境判断:
- 使用
readJSON file: 'xxx.json'从工作区文件读取,返回Groovy Map对象 - 支持字符串直接解析:
readJSON text: '{"name":"app","version":"1.2.3"}' - 示例:读取
package.json获取版本号并设为环境变量
agent any
stages {
stage('Parse package.json') {
steps {
script {
def pkg = readJSON file: "${WORKSPACE}/package.json"
env.APP_VERSION = pkg.version
echo "Deploying version: ${env.APP_VERSION}"
}
}
}
}
}
读写YAML配置实现动态部署
YAML广泛用于Kubernetes、Ansible或应用配置,readYaml和writeYaml可完成参数注入与生成:
-
readYaml file: 'config.yaml'或readYaml text: 'key: value',注意缩进必须用空格,禁用Tab -
writeYaml接受Map或List结构,自动格式化为合法YAML写入工作区文件 - 典型场景:根据分支名修改
deploy.yaml中的镜像tag后提交或部署
def config = readYaml file: 'deploy.yaml'
config.image.tag = env.BRANCH_NAME == 'main' ? 'latest' : "dev-${env.BUILD_NUMBER}"
writeYaml file: 'deploy-updated.yaml', data: config
}
常见问题与避坑提示
实际使用中容易因路径、格式或作用域出错:
- 所有文件路径都基于
${WORKSPACE},建议统一用env.WORKSPACE + '/xxx'拼接 - YAML字符串中禁止Tab缩进,否则
readYaml text:会抛出ScannerException -
readJSON/readYaml返回的是不可变Map,需用clone()再修改再write* - 若文件不存在,步骤会直接失败;可用
fileExists前置校验(需Pipeline Utility Steps ≥2.12.0)


















