【问题标题】:Azure pipeline with multiple environments具有多个环境的 Azure 管道
【发布时间】:2020-02-04 01:01:40
【问题描述】:

我的 dotnetcore 应用每个环境都有一个 appsettings.json(例如 appsettings.jsonappsettings.Development.json),我会喜欢在我的管道上利用这一点。

我看到了管道的 2 个选项:

Build Artifact for Dev -> Deploy on Dev -> Build Artifact for Prod -> Deploy on Prod

Build Artifact -> Deploy on Dev -> Deploy on Prod

对于第一个选项,我可以将环境设置为构建的参数。

对于第二个选项,我怎样才能只构建一次应用程序,并根据当前部署步骤设置环境?利用我拥有的多个 appsettings.json

最后,这些方法是否符合最佳做法?如果不是,那么具有多个环境的管道的最佳做法是什么?

【问题讨论】:

  • 您找到了实现此目的的方法吗?我还试图通过每个环境的构建管道来使用appsettings.Development.jsonappsettings.Production.json?如果有,请发布它,以便我们都能从中受益。

标签: .net-core azure-devops azure-pipelines


【解决方案1】:

通常我们可以生成单个工件,然后将工件部署到不同的环境,并在其自己的阶段发布阶段的任何环境中执行不同的转换。这意味着我们可以在每个发布环境中更改和覆盖appsettings.json 中定义的设置。

.json文件的转换方法请参考File transforms and variable substitution reference

此外,我们可以尝试安装Replace Tokens扩展,然后使用替换令牌任务在每个发布环境/阶段加载和更改appsettings.json文件中定义的设置。

您也可以转换设置或使用File Creator 创建一个新的appsettings.json文件来覆盖现有的。

以下博客供您参考:

【讨论】:

  • 使用文件转换是一种方法,但看起来不是一种直接的方法。因为在构建应用程序时,如果您将环境定义为“开发”,您的应用程序将使用 appsettings.Development.json。我一直在寻找与此类似的方法。
  • 那么,您是否尝试过上述答案中提到的 File Creator 扩展,它可以为每个环境创建一个新的 *.json 文件。
【解决方案2】:

您可以使用 Azure AppConfiguration 并将其添加为配置的额外源。这样,您的构建/发布过程就非常简单。

请参阅此文档:https://docs.microsoft.com/en-us/azure/azure-app-configuration/enable-dynamic-configuration-dotnet-core

它非常强大:您可以只选择部分配置(通过过滤器),可以拥有功能标志,还可以拥有秘密(来自链接的密钥库)。

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 2017-05-11
    • 2021-01-25
    • 2021-04-16
    • 1970-01-01
    • 2019-09-01
    • 2022-10-06
    • 2020-11-28
    相关资源
    最近更新 更多