背景
我在一个进程中使用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命名服务”。遍历一系列服务看起来更好。
答案 0 :(得分:2)
披露:我为Octopus Deploy工作。
这里最简单的解决方案是使用“文件中的替代变量”功能,而不是“ JSON配置变量”。我们有关于该功能here的一些文档。
简单地说,您可以在#{ServiceXUrl}
之类的JSON文件中使用令牌,并且在启用该功能并指定要转换的文件后,Octopus会找到具有匹配变量名的所有令牌,并将其替换为你。
请随时通过我们的支持论坛或电子邮件等常规支持渠道与我们联系。详细信息,https://octopus.com/support