如何根据DevOps中的发布阶段设置变量?

问题描述 投票:1回答:2

有没有办法可以根据Azure DevOps发布管道中的当前阶段轻松更改React应用程序中的变量?举个例子,假设我设置了三个阶段(dev / QA / production),我想在app的auth config中为每个环境换出一个客户端ID。如何“检测”当前正在使用哪个环境以选择适当的ID?我更愿意只需要运行单个构建任务并为每个管道阶段使用单个工件,而不是在每个阶段重建(如果可能的话)。

reactjs typescript azure devops azure-pipelines-release-pipeline
2个回答
1
投票

如果您不想单独为每个阶段捆绑,则需要一台服务器,提供您希望为客户端提供的值。

这可以通过在服务器端呈现HTML来完成。这是一个简短的示例模板:

<script>
  window.valueToExpose = <%= JSON.stringify(value) %>;
</script>

表达式<%= JSON.stringify(value) %>将由服务器的模板引擎执行。 (基于模板引擎,表达式可能会有所不同)

服务器生成的HTML看起来像qazxsw poi:

value = "Hello World"

在您的React应用程序中,您可以访问<script> window.valueToExpose = "Hello World"; </script>


0
投票

首先,我希望您的应用程序根据环境部署到不同的主机/ CNAME。

如果您不希望在部署/构建时提供某种环境标识符,而这些标识符已存在于您的代码中,那么检查URL可能是一种方法。这样做的缺点是,您现在正在将URL模式硬编码到脚本中并将这些模式映射到环境中。你决定权衡。

其次,我同意Lucas的回答,你需要一个外部源来获取你可以在运行时获取的配置。

如果你住在M $生态系统中我不知道什么是可用的,但是从其他堆栈中我可以推荐window.valueToExposespring cloud config,它们可以外部化,服务并提供额外的配置管理功能。

© www.soinside.com 2019 - 2024. All rights reserved.