[英]Pass Jenkins Pipeline parameters from a Jenkins job?
我有一个 Jenkins 管道脚本用于部署 lambda。 现在,用户将参数传递给作业以启动它。 我想进一步自动化这项工作并创建一个流程,在该流程中,工作触发和参数通过 JSON 文件传递以启动工作。
我不清楚如何继续我已经看到也许可以使用 JsonSlurper,但不确定这是否是该过程的理想解决方案。
有没有人有一个我可以实施的好解决方案?
我会推荐 GenericWebhook 插件。
您可以定义一个令牌,然后使用 POST 请求通过您需要的任何 JSON 触发作业。 如果您愿意,该插件将负责触发作业,甚至从 JSON 中解压缩变量。
可能不是最好的解决方案,但它是我广泛使用的解决方案。 您可以像这样读取 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.