Octopus 在数组中部署条件变量替换
Octopus Deploy conditional variable substitution in an array
背景
我在一个项目中使用 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":...}
由于数组可以更改,因此它所包含的对象将来可以具有不同的结构。而且它看起来像是一种解决方法而不是正确的方法。
问题
有没有办法告诉八达通“在数组中的名称属性中找到具有ServiceX值的对象,并将其“Url”属性设置为http://serviceX-如果是QA环境就QA,如果是Prod环境就http://serviceX-prod?
或者您是否建议我更改 HttpClient 和 Json 配置的方法?
附加信息:
在切换到 Json 配置中的对象数组之前,我曾经在 HttpClientFactoryServices 下保存嵌套对象。在八达通中很容易给它们添加 属性 值,即:
HttpClientFactoryServices:ServiceX:Url = "http://serviceX"
但是在项目代码中,我必须编写代码“从 Json 获取 serviceX,读取其 Url,将其添加为名为 ServiceX 的 httpClient 命名服务”。遍历一系列服务看起来更好。
披露:我为 Octopus Deploy 工作。
此处最简单的解决方案是使用 "Substitute Variables in Files" 功能,而不是 "JSON Configuration Variables"。我们有一些关于该功能的文档 here.
简单地说,您可以在 JSON 文件中使用一个标记,例如 #{ServiceXUrl}
,在启用该功能并指定您想要转换的文件后,Octopus 会找到任何匹配的标记变量名,并用它们代替你。
请随时通过我们常用的支持渠道与我们联系,例如我们的支持论坛或电子邮件。 https://octopus.com/support
中的详细信息
背景
我在一个项目中使用 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":...}
由于数组可以更改,因此它所包含的对象将来可以具有不同的结构。而且它看起来像是一种解决方法而不是正确的方法。
问题 有没有办法告诉八达通“在数组中的名称属性中找到具有ServiceX值的对象,并将其“Url”属性设置为http://serviceX-如果是QA环境就QA,如果是Prod环境就http://serviceX-prod?
或者您是否建议我更改 HttpClient 和 Json 配置的方法?
附加信息: 在切换到 Json 配置中的对象数组之前,我曾经在 HttpClientFactoryServices 下保存嵌套对象。在八达通中很容易给它们添加 属性 值,即:
HttpClientFactoryServices:ServiceX:Url = "http://serviceX"
但是在项目代码中,我必须编写代码“从 Json 获取 serviceX,读取其 Url,将其添加为名为 ServiceX 的 httpClient 命名服务”。遍历一系列服务看起来更好。
披露:我为 Octopus Deploy 工作。
此处最简单的解决方案是使用 "Substitute Variables in Files" 功能,而不是 "JSON Configuration Variables"。我们有一些关于该功能的文档 here.
简单地说,您可以在 JSON 文件中使用一个标记,例如 #{ServiceXUrl}
,在启用该功能并指定您想要转换的文件后,Octopus 会找到任何匹配的标记变量名,并用它们代替你。
请随时通过我们常用的支持渠道与我们联系,例如我们的支持论坛或电子邮件。 https://octopus.com/support
中的详细信息