【问题标题】:Set property to ant task from json file using jenkins使用 jenkins 从 json 文件将属性设置为 ant 任务
【发布时间】:2014-05-05 16:37:36
【问题描述】:

我有一个 Jenkins 工作,它会输出一个包含一堆值的 json 文件。具体来说,此文件包含来自使用 Jenkins 插件创建的虚拟机的 TCP 端口号。

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

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 步骤执行,因为这个相同的 ant 脚本用于其他不生成 json 文件的作业(我从静态 .properties 文件获取参数)。

【问题讨论】:

    标签: json ant jenkins


    【解决方案1】:

    你想要的是:

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

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

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

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

    【讨论】:

    • 感谢 .properties 创意。我将使用 groovy 来处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2015-01-11
    相关资源
    最近更新 更多