繁体   English   中英

使用jenkins将属性设置为json文件中的ant任务

[英]Set property to ant task from json file using jenkins

我有一个詹金斯(Jenkins)工作,会吐出带有多个值的json文件。 具体来说,此文件包含使用Jenkins插件创建的虚拟机的TCP端口号。

我需要从json文件中获取这些端口号,并将它们的值用在ant构建中,我将其称为jenkins作业的下一步。

json文件看起来像这样:

{
  "vms": [{
    "interfaces": [{
      "services": [{
        "internal_port": 25,
        "external_port": 12345,
        "id": "smtp"
      },
      {
        "internal_port": 80,
        "external_port": 12346,
        "id": "http"
      }]
    }]
  }]
}

因此,我需要为我的ant脚本从此json设置一个参数到$ {http.external.port}和$ {smtp.external.port}属性。

是否可以从单独的詹金斯任务中完成? 我是否必须在相同的ant脚本中执行此操作? 我更喜欢从一个单独的jenkins步骤执行操作,因为其他不生成json文件的作业使用了相同的ant脚本(我是从静态.properties文件中获取参数)。

您想要的是:

  • 运行外壳程序构建步骤(取决于OS)以解析这些值的JSON文件。
  • 将这些值存储在环境变量中。

不幸的是,这些仅在该构建步骤中仍然存在,但是您需要在下一个步骤中重新使用它们。 一种解决方案是将这些值临时存储到文件中,然后在下一个构建步骤(Ant)中读取该文件。 只要它们处于property=value格式,Ant就可以轻松地从文件中准备属性。

您还可以读取这些相同的变量,然后使用EnvInject插件将其注入到Jenkins环境变量中进行构建。 这将进一步允许您将这些值作为环境变量引用,而不仅仅是在Ant中。

至于如何解析JSON的值:您需要提供运行的操作系统以及您熟悉的脚本语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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