我有一个Jenkins Pipeline脚本用于部署Lambda。现在,用户将参数传递给作业以将其启动。我想进一步自动化作业,并创建一个流程,在该流程中,将触发作业,并通过JSON文件传递参数以启动作业。
我不清楚如何进行操作,我已经看到也许可以使用JsonSlurper,但是不确定这是否是该过程的理想解决方案。
有人能实施一个好的解决方案吗?
答案 0 :(得分:1)
我建议使用GenericWebhook插件。
您可以定义一个令牌,然后使用POST请求以所需的任何JSON触发作业。如果您愿意,该插件将负责触发作业,甚至从JSON中解包变量。
答案 1 :(得分:0)
可能不是最好的解决方案,但这是我广泛使用的解决方案。您可以像这样读取JSON文件。
node() {
stage("Read JSON") {
// This has to be done within a node() construct
myObj = readJSON file: '/opt/app/jenkins/userContent/test.json'
}
}
这是一个可供测试的简单JSON文件。
{
"Hosts": [
{
"Hostname": "host1.foobar.com",
"Purpose": "Web Server"
},
{
"Hostname": "host2.foobar.com",
"Purpose": "DB Server"
},
{
"Hostname": "host3.foobar.com",
"Purpose": "App Server"
}
]
}
您可以像这样引用它。
for (int hostnum=0; hostnum < myObj.Hosts.size(); hostnum++) {
println "Hostname: " + myObj.Hosts[hostnum].Hostname
println "Purpose: " + myObj.Hosts[hostnum].Purpose
}
从构建日志中..
Hostname: host1.foobar.com
[Pipeline] echo
Purpose: Web Server
[Pipeline] echo
Hostname: host2.foobar.com
[Pipeline] echo
Purpose: DB Server
[Pipeline] echo
Hostname: host3.foobar.com
[Pipeline] echo
Purpose: App Server