【问题标题】:Pass Jenkins Pipeline parameters from a Jenkins job?从 Jenkins 作业中传递 Jenkins Pipeline 参数?
【发布时间】:2019-09-20 15:53:43
【问题描述】:

我有一个用于部署 lambdas 的 Jenkins Pipeline 脚本。现在,用户将参数传递给作业以启动它。我想进一步自动化这项工作,并创建一个流程,在该流程中,工作触发器和参数通过 JSON 文件传递​​以启动工作。

我不清楚如何继续我已经看到也许可以使用 JsonSlurper,但不确定这是否是该过程的理想解决方案。

有人有我可以实施的好解决方案吗?

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    我会推荐 GenericWebhook 插件。

    您可以定义一个令牌,然后使用 POST 请求以您需要的任何 JSON 来触发作业。该插件将负责触发作业,甚至根据需要从 JSON 中解压缩变量。

    【讨论】:

      【解决方案2】:

      可能不是最好的解决方案,但它是我广泛使用的解决方案。您可以像这样读取 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
      

      【讨论】:

        猜你喜欢
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多