【问题标题】:VSTS Release Management for .NET Core.NET Core 的 VSTS 发布管理
【发布时间】:2017-12-29 17:21:41
【问题描述】:

我正在使用 VSTS 2017 发布管理和构建一次部署多策略。我的项目是一个 dotnet core-webproject。首先,我使用dotnet 恢复/构建/测试/发布我的项目,然后发布我的工件(一个 zip)。

现在我想将具有不同配置这个构建部署到不同的环境。通过“常规” dotnet,我使用 WinRM Web 应用程序管理和 parameters.xml 来添加我的环境特定配置。如下例:

但我使用dotnet publish 创建的包是一个 zip,而不是 msdeploy-package。

  1. 如何替换配置(appsettings.json)?

  2. 如何将其部署到我的 IIS?

我已经尝试过的:

首先我运行了dotnet publish,但没有Zip Published Projects-选项。这使得我可以轻松地在appsettings.json 中进行更改,但需要我使用复制文件-操作来进行部署。这有 IIS 锁定文件的缺点,这反过来又需要我编写使 IIS 脱机/联机的 PS 脚本。

我只想创建一个包,它可以部署到多个环境并具有不同的配置。我怎样才能实现它?

【问题讨论】:

  • Azure Key Vault 怎么样?符合您的要求吗?
  • @starain-MSFT - 我敢肯定它会很好用。但不幸的是,我无法在当前项目中使用任何云服务。而且我们也没有本地 Azure。
  • 您也可以加密敏感信息并在 appsettings.json 中使用,然后在您的代码中解密。

标签: asp.net iis azure-pipelines azure-pipelines-build-task azure-pipelines-release-pipeline


【解决方案1】:

您无需更改 appsettings.json。核心项目可以根据 ASPNETCORE_ENVIRONMENT 环境变量从appsettings.[environment].json 文件中检索数据。

因此,只需在每台环境机器中设置一次 ASPNETCORE_ENVIRONMENT 环境变量即可。

相关话题:VSTS Deploy IIS App winrm and change appsettings.json

更新:

关于敏感的连接字符串,更好的方法是使用 Azure Key Vault 保护机密。关于如何使用它的博客:Protecting Secrets using VSTS and Azure Key Vault

您还可以加密敏感信息(例如连接字符串),然后在您的代码中解密。

另一种方法是您可以在 VSTS 构建/发布中构建项目(例如 Visual Studio 构建任务)之前替换该值。注意:如果其他人可以访问已发布的工件或获取构建源文件(例如私有构建代理),他们可以获取敏感信息无论在构建之前替换值还是存储在 parameters.xml 中

【讨论】:

  • 我们已经在使用 appsettings.x.json。但是我假设我们需要在源代码管理中进行设置?
  • 另外,作为后续问题,如果同一台服务器上有多个环境,我该如何处理 aspnetcore_environement
  • @smoksnes 不清楚源代码管理中的设置,什么设置?关于在同一台服务器中,不,只是服务器中的一个环境。但是,您可以使用WebHostBuilder.UseEnvironment method 设置环境。 (在构建任务之前更新代码(例如Replace Tokens task
  • 对不起。设置我的意思是我的 appsettings.json。假设我们有一个敏感的连接字符串,可能不适合在源代码控制中使用。使用建议的解决方案,我认为所有这些都必须在源代码控制中并且在编译时已知?
  • @smoksnes 更好的方法是使用 Azure Key Vault 保护它,查看我回复的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多