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

时间:2014-03-26 23:25:08

标签: json ant 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}属性。

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

1 个答案:

答案 0 :(得分:1)

你想要的是:

  • 运行shell构建步骤(取决于操作系统)以解析这些值的JSON文件。
  • 将这些值存储在环境变量中。

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

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

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