使用Octopus Deploy转换ASP.NET 5 json配置文件

时间:2015-12-17 19:46:37

标签: octopus-deploy asp.net-core

我正在使用Octopus Deploy根据本指南将ASP.NET 5网站部署到Azure:https://gist.github.com/alfhenrik/ee08dbb1fb6e2bc7f772

我正在尝试找到一种转换配置文件的方法,但还没有找到任何优雅的解决方案。目前我最好的建议是在本地开发环境中使用配置的appsettings.json和appsettings.Release.json,这是appsettings.json的精确副本,其中所有值都是章鱼变量,如#{myVariableName}。然后在使用Octopus进行部署时,我们有一个预部署脚本,用appsettings.Release.json替换appsettings.json,然后在appsettings.json上运行变量替换。

有更好的建议吗?

3 个答案:

答案 0 :(得分:3)

我为解决这个问题所做的是使用xml配置而不是json。我将所有配置从appsettings.json和appsettings.Release.json移动到Web.config和Web.Release.config并在Startup.cs中添加了.AddXmlFile(“Web.config”)。这样,我可以在Octopus Deploy中使用内置配置转换,同时等待它们开始正确支持ASP.NET 5应用程序。

更新2016-02-02 : 自v3.3起,对.json配置文件的支持现已添加到Octopus Deploy中。见https://octopus.com/blog/octopus-deploy-3.3#ASPNETCoreJSON

答案 1 :(得分:0)

Octopus现在支持此功能,

config transformation for json config files

答案 2 :(得分:0)

最令人怀疑的建议是正确的。但如果有人像以前的章鱼版本一样被卡住了。您可以通过运行在框中设置环境变量的自定义PowerShell脚本来解决此问题

sleep 50
$EnvName = $OctopusParameters["ASPNETCORE_ENVIRONMENT"]
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", $EnvName, "Machine")

只需添加一个名为“ASPNETCORE_ENVIRONMENT”的变量,其中包含您应该部署的环境的名称,例如:QA

例如:appSettings.QA.Json - >添加值为QA的变量ASPNETCORE_ENVIRONMENT

然后依靠正常:

.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)

在框中进行转换