我有一个很少设置参数的jenkins作业,并且在工作区中有一个JSON文件,该文件必须使用通过jenkins传递的参数进行更新。
例:
我有以下参数,我将从触发作业的用户那里获取输入:
我的工作空间中有一个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
插件。但是我无法找到有关参数化值的任何帮助。
请建议配置此插件,或者建议其他任何可以满足我目的的插件。
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"
}
问题内容: 我有没有节点的Jenkins安装程序,所有构建都在同一台机器上运行。我想设置一个Groovy脚本来清理旧的工作区,所以我想使用: 当掌握时,我应该赋予什么价值? 问题答案: 执行以下脚本,使用清理所有Jenkins工作区:
问题内容: 但是,我需要从System Groovy脚本读取文件,因此使用Text-finder或Groovy PostBuild插件的解决方案将不起作用。 如何从系统Groovy脚本获取工作区路径?我尝试了以下方法: 谢谢! 问题答案: 每个构建都有一个 工作区 ,因此您需要首先找到所需的项目。(在詹金斯中,术语“工作”和“项目”在API中也是可以互换使用的。) 之后,您可以交叉手指,只需调用已
问题内容: 我正在尝试使用节点从循环数据中写入JSON文件,例如: loop.json中的outPut是: 但是我想要这样的输出文件(如下),而且如果我再次运行该代码,它应该将该新输出添加为相同的现有JSON文件中的元素: 我想使用第一次创建的相同文件,但是每当我运行该代码时,新元素都应添加到该文件中 问题答案: 如果随着时间的推移该json文件不会变得太大,您应该尝试: 创建一个具有表数组的ja
现在我正在使用EnvInject插件通过属性文件将我的环境变量插入到Jenkins作业中。 然而,现在我有第二个作业,它需要与第一个作业相同的环境变量,而不是一些我想通过另一个属性文件加载的额外变量。 我知道,可以通过EnvInject插件的属性内容编辑字段插入值,但我想将其保存在一个文件中,以便在作业之间共享。但似乎不可能在EnvInject插件中添加第二个属性文件。 有没有办法将多个属性文件注
我试图在Jenkins Pipeline中列出工作区中的文件,这样我就可以使用它来生成适当的并行任务。 虽然我可以简单地使用sh ls 但是,我根本无法获取文件列表。首先,我不得不求助于一些奇怪的东西来简单地找出构建的当前工作目录: 现在我调用它来检索文件列表: 并在上获得一个NPE,这意味着,通过我对javadoc的阅读,新文件(baseDir)不存在(或者不是目录)。 我之所以将其标记为,是因