章鱼在阵列中部署条件变量替换

时间:2018-07-25 11:02:36

标签: asp.net-core octopus-deploy

背景

我在一个进程中使用Json配置变量替换的项目中使用Octopus Deploy。我贡献的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部分。 (在章鱼上)

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

  

HttpClientFactoryServices:0 = {“名称”:“ ServiceX”,“ URL”:...}

     

HttpClientFactoryServices:1 = {“名称”:“ ServiceY”,“ URL”:...}

由于可以更改数组,所以将来保存的对象可能具有不同的结构。而且,这似乎是一种解决方法,而不是正确的方法。

问题 有没有一种方法可以告诉Octopus“在数组的Name属性中找到具有ServiceX值的对象,并将其“ Url”属性设置为http:// serviceX-QA(如果它在QA环境中)以及http:/ / serviceX-prod是否在Prod环境中?

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

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

  

HttpClientFactoryServices:ServiceX:Url =“ http:// serviceX”

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

1 个答案:

答案 0 :(得分:2)

披露:我为Octopus Deploy工作。

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

简单地说,您可以在#{ServiceXUrl}之类的JSON文件中使用令牌,并且在启用该功能并指定要转换的文件后,Octopus会找到具有匹配变量名的所有令牌,并将其替换为你。

请随时通过我们的支持论坛或电子邮件等常规支持渠道与我们联系。详细信息,https://octopus.com/support