【问题标题】:Octopus Deploy conditional variable substitution in an arrayOctopus 在数组中部署条件变量替换
【发布时间】:2018-07-25 11:02:35
【问题描述】:

背景

我在一个项目中使用 Octopus Deploy,并在其中一个进程中使用 Json 配置变量替换。我贡献的 Asp.net 核心项目从 Json 配置中获取 url 和名称,并添加 HttpClient 实例以到达多个端点。

json 看起来像这样:

 "HttpClientFactoryServices": [
    {
      "Name": "ServiceX",
      "Url": "http://serviceXurl"
    },
    {
      "Name": "ServiceY",
      "Url": "http://serviceYurl"
    },
    {
      "Name": "ServiceZ",
      "Url": "http://serviceZurl"
    }
  ] 

我想根据 QA 和 Prod 环境编辑这些 Url 部分。 (在八达通上)

我知道 Octopus documentation 中有一个数组对象替换,但我不太愿意说

HttpClientFactoryServices:0 = {"name":"ServiceX", "url":...}

HttpClientFactoryServices:1 = {"name":"ServiceY", "url":...}

由于数组是可以更改的,因此它所包含的对象将来可以具有不同的结构。而且它看起来像是一种解决方法,而不是正确的方法。

问题 有没有办法告诉 Octopus“在数组中的 Name 属性中找到具有 ServiceX 值的对象,并将其“Url”属性设置为 http://serviceX-QA 如果它在 QA 环境中,然后设置为 http:/ /serviceX-prod 如果在 Prod 环境中?

或者您是否建议我更改对 HttpClient 和 Json 配置的方法?

其他信息: 在我切换到 Json 配置中的对象数组之前,我曾经在 HttpClientFactoryServices 下保存嵌套对象。在 Octopus 中添加属性值很容易,即:

HttpClientFactoryServices:ServiceX:Url = "http://serviceX"

但在项目代码中,我必须编写“从 Json 获取 serviceX,读取其 Url,将其添加为名为 ServiceX 的 httpClient 命名服务”的代码。遍历一系列服务看起来更好。

【问题讨论】:

    标签: asp.net-core octopus-deploy


    【解决方案1】:

    披露:我为 Octopus Deploy 工作。

    这里最简单的解决方案是使用“替换文件中的变量”功能,而不是“JSON 配置变量”。我们有一些关于该功能的文档here

    简单地说,你可以在你的 JSON 文件中使用一个标记,比如#{ServiceXUrl},在启用该功能并指定你想要转换的文件后,Octopus 会找到任何具有匹配变量名的标记,并将它们替换为你.

    请随时通过我们常用的支持渠道(例如我们的支持论坛或电子邮件)与我们联系。详情https://octopus.com/support

    【讨论】:

    • 感谢杰登,这就像一个魅力!我认为在我的开发机器中使用这个“章鱼风格的变量”会给我带来麻烦,但我使用 appsettings.development.json 解决了这个问题。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多