Ill*_*lia 8 azure-devops asp.net-core create-react-app
我的任务是将 aspnet 核心 React 应用程序部署到 2 个不同的环境:开发环境和生产环境。每个环境都应单独配置。
我将 Azure DevOps 用于 CI/CD
AspNet 项目包含以下用于构建应用程序的命令
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build" />
Run Code Online (Sandbox Code Playgroud)
我使用 adal 进行授权,这就是为什么我必须传递一些对于 Dev 和 Prod 不同的秘密变量
const adalConfig = {
tenant: process.env.REACT_APP_TENANT,
clientId: process.env.REACT_APP_CLIENT_ID,
redirectUri: process.env.REACT_APP_REDIRECT_URI,
Run Code Online (Sandbox Code Playgroud)
在 Azure devops 中,我使用以下命令设置参数:
echo ##vso[task.setvariable variable=REACT_APP_TENANT;isOutput=true]c00000-00ce-000-0f00-0000000004000
Run Code Online (Sandbox Code Playgroud)
在 azure devops 中,我有下一个用于 aspnet 核心构建应用程序的标准命令
问题:
也许您已经有将核心反应应用程序部署到 2 个不同环境的任务?或者,如果我需要更改部署策略,请提供建议。
我发现的唯一解决方案是使用 .env 文件,但我必须将此文件提交给 git - 从 master 部署它。而且我仍然不知道如何为 dev 和 prod 使用不同的文件。
isOutput=true你的task.setvariable指挥。这仅在 Pipelines 引擎中设置一个变量,以供其他步骤使用,但实际上并不映射到环境变量。删除isOutput后您将看到REACT_APP_TENANTenv 变量。task.setvariable对于动态变量更有用。我们需要区分两个独立的过程:
在管道中设置echo ##vso[task.setvariable ...]变量 (1.)。
读取变量的地方(如tenant: process.env.REACT_APP_TENANT)并不那么明显。如果它是nodejs服务器端代码,它将在2中执行。如果它是某个构建脚本的一部分,它将在1中读取。
React 很棘手,因为:
create-react-app(这是 ASP.NET React 应用程序默认执行的操作),则必须在env 变量前加上前缀REACT_APP_才能使用它们。如果直接使用 Webpack,您将需要一些插件。| 归档时间: |
|
| 查看次数: |
3011 次 |
| 最近记录: |