使用${params}在JSON文件中写入所有参数
我是一个shell脚本的初学者,当jenkins的工作参数化时,我遇到了一些问题。我想使用使用${params}在JSON文件中写入所有参数,json,bash,shell,jenkins-pipeline,Json,Bash,Shell,Jenkins Pipeline,我是一个shell脚本的初学者,当jenkins的工作参数化时,我遇到了一些问题。我想使用${params}将带有参数的jenkins作业管道构建的所有参数写入JSON文件! 在我的例子中,我有4个参数(api:multi-select、name:string、version:single-select和status:Boolean),其中有脚本文件 pipeline { agent any stages { stage('Build') {
${params}
将带有参数的jenkins作业管道构建的所有参数写入JSON文件!
在我的例子中,我有4个参数(api:multi-select、name:string、version:single-select和status:Boolean),其中有脚本文件
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中获得干净的结果?请告诉我需要帮助。将此添加到脚本顶部:
import groovy.json.JsonOutput
然后使用此行代替sh./test.sh${params}
:
这使用了一个Groovy库和一个用于编写文件的函数,这意味着您不需要使用
sh
方法。这是很好的工作,谢谢,但是在值API{“API”:“dev,qa,prod”,“name”:“CC”,“version”:“g3”,“status”:true}
中有一个问题,我希望像“api”:“dev”,“qa”,“prod”
你知道吗?那不是有效的JSON。你是说“api”:[“dev”、“qa”、“prod”]
?我会这样做,迭代数组以创建一个新数组,该数组的值被拆分:
writeFile file: 'params.json', text: JsonOutput.toJson(params)