代码之家  ›  专栏  ›  技术社区  ›  Red

你能将appsettings.json部署到Azure吗?

  •  0
  • Red  · 技术社区  · 4 年前

    我们有4个Azure环境用于开发过程的各个阶段;开发、QA、UAT、生产。正如您所料,不同环境的设置和选项需要有所不同,例如。, "apiurl": "http://dev-api.ourdomain.com" in dev需要成为 "apiurl": "https://uat-api.ourdomain.com" 用于UAT。

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

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

    我们想设置 appsettings.json 通过环境转换来解决差异。这解决了最后3个问题,因为它将存储在我们的代码源代码管理中(如果不是秘密的话),但如果我们不能部署相同的文件来设置Azure配置,这是没有用的。管道步骤可能会解决问题1和2,但会重新引入问题3和5。

    当然,有一个简单的方法可以做到这一点,而我却错过了?

    0 回复  |  直到 4 年前
        1
  •  0
  •   Vince Bowdren    4 年前

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

    这符合您的要求,因为:

    1. 使用流水线进行自动化可以实现定时控制(req1)并降低人为错误的风险(req2)
    2. 在源代码管理中保留一些设置可以为您提供以前值(req3)的(部分)历史记录
    3. 一些设置可以在所有环境中是相同的;这些可以在appsettings.json中保持不变,但不同的可以被管道覆盖并正确调整
    4. 可以使用脚本任务来覆盖设置,例如 Powershell 或者 FileTransform 实际更改appsettings.json的任务
    5. 或者,您可以使用自动配置azure应用程序服务配置来覆盖设置 Azure CLI 或者 ARM Template 例如

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

    1. 根据环境将管道变量组织到不同的组中,因此管道代码清楚地表明了部署时的差异
    2. 使用 azure cli powershell commands 以询问实际部署的应用程序服务。
    推荐文章