使用部署槽为每个环境响应应用不同的 API URL

问题描述

这是一个与使用 Azure 应用服务和部署槽的 CRA React 应用相关的问题。

我们有一个特定于每个环境的后端 API,所以对于“开发”我们有一个特定的 API,对于“测试”我们有另一个,基本上只是根据我们所处的环境不同的 URL。

到目前为止,Pipelines 已经解决了这个问题。从 React App 中的“dev”分支构建管道,将 REACT_APP_STAGE 设置为“dev”,然后我们可以在 React 应用程序内部检查我们处于哪个阶段,从而更改要使用的 URL。

不过,现在棘手的部分是我们计划使用部署槽,根据我的理解,这意味着我们可以从 Stage -> Prod 无缝更改,而无需重建项目或使用任何管道。这意味着这两种环境中的 React App 将具有相同的 REACT_APP_STAGE 变量,但它们需要不同。

是否有人对如何解决有关不同 URL 和部署槽的问题有任何提示或线索?

我很珍惜时间!

解决方法

https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots

假设 REACT_APP_STAGE 是一个环境变量,并且您希望根据您的插槽为该变量设置不同的值。

如果您使用应用服务设置,您可以将配置值标记为“粘性”,因此当您交换插槽时,目标环境变量不会交换。

要将应用设置或连接字符串配置为坚持特定插槽(未交换),请转到该插槽的配置页面。添加或编辑设置,然后选择部署槽设置。选中此复选框会告知应用服务该设置不可交换。

enter image description here

https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots