我有一个.net核心SPA应用程序,该应用程序使用ADAL库与Azure AD集成。我在app.module.ts文件中具有ADAL配置(客户端ID,租户ID等),它们当前指向本地开发环境值。
我正在使用Azure DevOps构建和部署应用程序。我有一个Azure构建管道,用于在CI周期结束时构建和发布工件,并且我有一个发布管道,用于使用IIS Web部署任务将工件并部署到QA环境(Windows VM)中。
发布管道已成功将应用程序部署到VM,但仍使用旧的开发值进行ADAL配置,因此身份验证在QA服务器上不起作用。
我知道我可以使用environment.ts文件根据要部署到的环境动态传递ADAL配置,但是问题是默认情况下,构建管道的发布工件任务使用'- prod”参数来构建要用于部署到质量检查程序的工件(.zip),这意味着无论我要部署到哪个环境,它都将始终使用environment.prod.ts文件。
我的想法是在CI阶段结束时一次构建工件,并将相同的工件部署到任何更高的环境。如何使用.net Core + Angular 7 + MSAdalAngular6 + Azure DevOps实现该目标?
谢谢!
答案 0 :(得分:1)
您所描述的是每个环境具有不同的配置。将每个环境的配置都签入,并在运行时让应用确定运行的位置以及要加载的配置的可能性通常较小。
您可以通过Azure门户或其他某种机制设置特定的环境变量来完成此操作。
答案 1 :(得分:0)
我总是通过配置的方式是您陈述的“一旦构建”的想法。使用标记化的标准配置文件,然后在Azure DevOps中,可以在发布管道中使用“替换令牌”之类的任务,该任务将使用管道变量(替换令牌时,您可能需要先取消存档然后重新存档)
我的团队通常都具有用于本地开发的默认配置和用于部署的标记化配置(在发布期间会重命名),这也使您可以将秘密保持在源代码控制范围之外。 例如appconfig.json和releaseconfig.json
另一种常见方法是将所有配置作为环境变量存储在服务器上,这会带来自身的问题,并在应用程序启动时检索它们。