首页 > 解决方案 > 使用 ${params} 将所有参数 jenkins 写入 JSON 文件

问题描述

我是 shell 脚本的初学者,在 jenkins 作业参数化时遇到了一些问题。我想使用参数将 jenkins 作业管道构建的所有参数写入 JSON 文件${params}!在我的情况下,我有 4 个参数(apis:multi-select,name:string,version:single-select 和 status:Boolean),有脚本 Jenkinsfile

pipeline {
  agent any
    stages {
        stage('Build') {              
            steps {              
                script{              
                   sh "./test.sh ${params}"
                }
            }
        }
    }
}

test.sh 的内容

#!/bin/bash
echo $@ > file.json

詹金斯的输出

+ ./test.sh [apis:dev,qa,prod, name:CC, version:g3, status:true]

结果为 file.json

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

我的问题是如何格式化输出以在 file.json 中获得干净的结果?我需要帮助。

标签: jsonbashshelljenkins-pipeline

解决方案


将此添加到脚本的顶部:

import groovy.json.JsonOutput

然后使用这一行代替sh "./test.sh ${params}"

writeFile file: 'params.json', text: JsonOutput.toJson(params)

这使用 Groovy 库和原生 Jenkins 方法来编写文件,这意味着您不需要使用该sh方法。


推荐阅读