【问题标题】:How to set a variable dependent on its release stage in DevOps?如何在 DevOps 中根据其发布阶段设置变量?
【发布时间】:2019-03-12 21:41:51
【问题描述】:

有没有一种方法可以根据 Azure DevOps 发布管道中的当前阶段轻松更改 React 应用程序中的变量?例如,假设我设置了三个阶段(开发/QA/生产),并且我希望为每个环境换出应用程序的身份验证配置中的客户端 ID。如何“检测”当前正在使用哪个环境以选择适当的 ID?我宁愿只需要运行一个构建任务并为每个管道阶段使用一个工件,而不是在每个阶段重新构建(如果可能的话)。

【问题讨论】:

  • 你使用 webpack 还是其他的?

标签: reactjs typescript azure azure-devops devops


【解决方案1】:

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

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

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

表达式&lt;%= JSON.stringify(value) %&gt; 将由您服务器的模板引擎执行。 (表达式可能会根据您的模板引擎而有所不同)

服务器生成的 HTML 看起来像 value = "Hello World":

<script>
  window.valueToExpose = "Hello World";
</script>

在您的 React 应用程序中,您可以访问 window.valueToExpose

【讨论】:

    【解决方案2】:

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

    如果您不想在部署/构建时提供某种环境标识符,该标识符已嵌入到您的代码中,那么检查 URL 可能是一种方法。这样做的缺点是您现在将 URL 模式硬编码到脚本中并将它们映射到环境。您决定权衡取舍。

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

    如果您生活在 M$ 生态系统中,我不确定有什么可用的,但从其他堆栈中,我可以推荐 spring cloud configconfigrd.io,它们可以外部化、服务和提供额外的配置管理功能。

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多