如何在没有多个版本的情况下将React应用程序部署到多个环境?

时间:2019-07-10 08:06:24

标签: reactjs azure-devops continuous-integration aspnetboilerplate multistage

我正在使用Azure DevOps设置CI / CD管道,以将React应用程序自动部署到多个环境。据我了解,环境变量(REACT_APP_ *)在npm构建期间使用。如何在不为每个环境创建步骤的情况下设置构建阶段?

我正在使用带有React前端的全新ASP.Net Boilerplate项目。

这是我目前所拥有的

我在package.json中复制了构建任务,以允许多个环境

"scripts": {
  ...
  "build": "set REACT_APP_ENV=production && react-app-rewired build --scripts-version react-scripts-ts",
  "builduat": "set REACT_APP_ENV=uat && react-app-rewired build --scripts-version react-scripts-ts",
...
}

然后在我的CI管道中,我复制了构建任务

- script: yarn builduat
  displayName: '[UAT] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)

- script: yarn build
  displayName: '[PROD] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)

我不想在每个环境中重复进行操作,那么理想的解决方案是什么? 我真的不想在CD(部署阶段)中构建解决方案

2 个答案:

答案 0 :(得分:0)

我对反应并不太了解,但是您的方法被描述为“一次构建,部署很多”,这是发布过程中非常重要的方面。

您缺少的一点是将构建作为工件发布,然后可以在发布管道中使用。

看看发布工件任务:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops

将每个环境发布到单独的工件中,然后在发布管道中进行选择。

答案 1 :(得分:0)

我终于做了一个PowerShell脚本,它将替换构建工件中的内容。

所有详细信息都可以在此处找到:https://github.com/Thibaultce/react-azuredevops-buildonce-deploymany