繁体   English   中英

从 Jenkins 作业传递 Jenkins 管道参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM