Angular 将adal配置动态传递到Azure DevOps发布管道

Angular 将adal配置动态传递到Azure DevOps发布管道,angular,.net-core,azure-devops,adal,adal.js,Angular,.net Core,Azure Devops,Adal,Adal.js,我有一个.net核心SPA应用程序,我使用ADAL库与Azure AD集成。我在app.module.ts文件中有ADAL配置(客户端ID、租户ID等),它们当前指向本地开发环境值 我正在使用Azure DevOps构建和部署应用程序。我有一个Azure构建管道用于在CI周期结束时构建和发布工件,我有一个发布管道用于获取工件并使用IIS Web deploy任务将其部署到QA环境(windows VM) 发布管道成功地将应用程序部署到VM,但它仍然使用旧的ADAL配置开发值,因此身份验证在QA服

我有一个.net核心SPA应用程序,我使用ADAL库与Azure AD集成。我在app.module.ts文件中有ADAL配置(客户端ID、租户ID等),它们当前指向本地开发环境值

我正在使用Azure DevOps构建和部署应用程序。我有一个Azure构建管道用于在CI周期结束时构建和发布工件,我有一个发布管道用于获取工件并使用IIS Web deploy任务将其部署到QA环境(windows VM)

发布管道成功地将应用程序部署到VM,但它仍然使用旧的ADAL配置开发值,因此身份验证在QA服务器上不起作用

我知道我可以使用environment.ts文件根据我要部署到的环境动态传递ADAL配置,但问题是构建管道的发布工件任务默认使用“---prod”参数来构建工件(.zip)我正在使用它部署到QA,这意味着它将始终使用environment.prod.ts文件,而不管我部署到哪个环境

我的想法是在CI阶段结束时构建一次工件,并将同一工件部署到任何更高的环境中。如何使用.NETCore+Angular7+MSAdalAngular6+Azure DevOps实现这一点


谢谢

您所描述的是每个环境具有不同的配置。让每个环境的配置签入,并在运行时让应用程序确定它在哪里运行以及加载哪个配置,这往往不太容易出错


您可以通过Azure门户或其他机制设置特定的环境变量来实现这一点。

我如何始终传递配置是您陈述的构建后的想法。使用标记化的标准配置文件,然后在Azure DevOps中,您可以在发布管道中使用类似“替换令牌”的任务,这将使用管道变量(在替换令牌时,您可能需要取消存档,然后重新存档)

我的团队通常有一个用于开发的带有本地条目的默认配置和一个用于部署的标记化配置(在发布过程中被重命名),这也允许您在源代码管理之外保守秘密。 e、 g.appconfig.json和releaseconfig.json

另一种常见的方法是将所有配置作为环境变量存储在服务器上,这会带来自身的问题,并在应用程序启动时检索它们