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

时间:2015-07-20 20:08:01

标签: jenkins jenkins-plugins

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

示例:

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

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

我在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插件。但我无法找到有关参数化值的任何帮助。

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

3 个答案:

答案 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文件并进行更改。