【问题标题】:Can you deploy appsettings.json to Azure?可以将 appsettings.json 部署到 Azure 吗?
【发布时间】:2022-01-07 13:16:59
【问题描述】:

我们为开发过程的各个阶段提供了 4 个 Azure 环境;开发、质量保证、UAT、生产。如您所料,环境之间的设置和选项需要有所不同,例如,dev 中的 "apiurl": "http://dev-api.ourdomain.com" 需要成为 UAT 的 "apiurl": "https://uat-api.ourdomain.com"

目前我们在 Azure 门户的应用服务配置页面中手动设置这些。我们正在尝试克服这种方法的一些问题:

  1. 无法定时发布,必须手动完成
  2. 容易出现人为错误
  3. 以前的值丢失
  4. 我们无法轻松比较环境之间的值
  5. 我们无法轻易看出哪些设置不再使用

我们想设置一个appsettings.json,并针对差异进行环境转换。这解决了最后 3 个问题,因为它将存储在我们的代码源控制中(如果不是机密),但如果我们无法部署相同的文件来设置 Azure 配置,这将毫无用处。流水线步骤可能会解决问题 1 和 2,但会重新引入问题 3 和 5。

肯定有一种我缺少的简单方法可以做到这一点吗?

【问题讨论】:

    标签: azure azure-devops configuration appsettings


    【解决方案1】:

    我建议在您的源代码中创建 appsettings.json 文件,并使用 pipeline 来部署包含它的应用服务;这些设置will take effect。管道可以在部署之前立即调整文件内容,或者按原样上传文件,但也可以部署应用程序设置以覆盖文件的内容。

    这符合您的要求,因为:

    1. 使用自动化流水线可以控制时间(要求 1)并降低人为错误的风险(要求 2)
    2. 在源代码管理中保留一些设置可为您提供以前值的(部分)历史记录(要求 3)
    3. 某些设置可能在所有环境中都相同;这些可以在 appsettings.json 中保持不变,但那些不同的可以被管道覆盖并正确调整
    4. 您可以通过使用脚本任务(例如 PowershellFileTransform 任务来实际更改 appsettings.json)来覆盖设置
    5. 或者,您可以通过自动配置 Azure 应用服务配置来覆盖设置,例如使用 Azure CLIARM Template

    为了比较不同环境中的设置(要求 5),我建议:

    1. 按环境将管道变量组织到不同的组中,这样管道代码就可以清楚地说明部署时的差异
    2. 使用azure clipowershell commands查询实际部署的应用服务。

    【讨论】:

    • 感谢您的回复文斯,我今天一直在消化它。我想你是说我可以在构建中转换文件并上传转换后的 appsettings 并嵌入环境变量。或者我可以编写某种脚本来合并管道中的原始版本和环境版本。我觉得我错过了一些简单的东西。我们可以同时上传两者,环境文件将成为另一个提供者吗?还是微软真的放弃了 Azure 中配置文件的环境转换?我不想尝试做一些看起来应该已经集成的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多