我有一个jenkins工作,设置的参数很少,我在工作区中有一个JSON文件,必须使用我通过jenkins的参数进行更新。
示例:
我有以下参数,我将从触发该作业的用户那里获取输入:
我在run / job.json下的工作区中有一个json文件,其中包含以下内容:
{
environment: "ENV1",
filename: "abc.txt"
}
现在无论用户在触发作业之前给出的值是什么,都必须在job.json中替换。
因此,当用户触发作业时,job.json文件应为:
{
environment: "ENV2",
filename: "abc.txt"
}
请注意json中必须更新的环境值。
我尝试了https://wiki.jenkins-ci.org/display/JENKINS/Config+File+Provider+Plugin插件。但我无法找到有关参数化值的任何帮助。
请建议配置此插件或建议任何其他可以满足我目的的插件。
答案 0 :(得分:8)
配置文件提供程序插件不允许您将参数传递给配置文件。您可以使用任何脚本语言解决您的问题。我最喜欢的方法是使用Groovy plugin。点击一个复选框"执行系统Groovy脚本"并粘贴以下脚本:
import groovy.json.*
// read build parameters
env = build.getEnvironment(listener)
environment = env.get('environment')
filename = env.get('filename')
// prepare json
def builder = new JsonBuilder()
builder environment: environment, filename: filename
json = builder.toPrettyString()
// print to console and write to a file
println json
new File(build.workspace.toString() + "\\job.json").write(json)
输出样本:
{
"environment": "ENV2",
"filename": "abc.txt"
}
答案 1 :(得分:1)
使用Pipeline Utility Steps插件,很容易实现。
jsonfile = readJSON file: 'path/to/your.json'
jsonfile['environment'] = 'ENV2'
writeJSON file: 'path/to/your.json', json: jsonfile
答案 2 :(得分:0)
我会保持简单。 Windows批处理文件或shell脚本(取决于操作系统),它将读取环境值并打开JSON文件并进行更改。