一尘不染

使用Jenkins在工作区中写入json文件

jenkins

我有一个很少设置参数的jenkins作业,并且在工作区中有一个JSON文件,该文件必须使用通过jenkins传递的参数进行更新。

例:

我有以下参数,我将从触发作业的用户那里获取输入:

  • 环境(考虑用户选择“ ENV2”)
  • 文件名(考虑用户保留默认值)

我的工作空间中有一个json文件,位于run / job.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插件。但是我无法找到有关参数化值的任何帮助。

请建议配置此插件,或者建议其他任何可以满足我目的的插件。


阅读 710

收藏
2020-07-25

共1个答案

一尘不染

Config File Provider
Plugin不允许您将参数传递给配置文件。您可以使用任何脚本语言来解决您的问题。我最喜欢的方法是使用Groovy插件。选中“执行系统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"
}
2020-07-25