9

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

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

.

这是我目前拥有的

我在 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(部署阶段)构建解决方案

4

2 回答 2

3

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

所有细节都可以在这里找到:https ://github.com/Thibaultce/react-azuredevops-buildonce-deploymany

于 2019-08-11T12:50:56.823 回答
0

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

您缺少的一点是将构建发布为工件,然后您可以在发布管道中获取这些工件。

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

发布您的每个环境以分离工件,然后在您的发布管道中提取它们。

于 2019-07-10T08:38:56.783 回答