如何根据构建的分支为具有不同环境变量的 creat-react-app 项目设置 DevOps 构建?

IT技术 reactjs azure-devops environment-variables create-react-app build-pipeline
2021-05-14 17:53:17

我们有一个 create-react-app 项目,它从环境中获取一些构建参数(例如 Auth0 配置),这意味着这些环境变量会影响 React 构建。

我们正在为此项目开发 Azure DevOps 构建管道,虽然在管道的变量页面上定义变量很简单,但如何根据正在构建的分支设置不同的变量并不明显。

例如,我们希望dev分支在 Auth0 中构建 using 或 development 租户,而 release 和 master 分支应该在 Auth0 中构建 using 或 production 租户(相同的变量,两个不同的值)。

是否有记录/支持的方法?或者一些“最佳实践”?

我读过您可以从 PowerShell 脚本修改变量,例如在这篇文章中这是最好的方法吗?脚本如何检查正在构建的分支,以选择正确的值集?

我还发现 DevOps 有一个变量组的概念。我还没有读过它,但是为每个分支(或分支模式)定义一个变量组并让脚本选择要应用的组是否是一种好方法?如何?

1个回答

如何根据构建的分支为具有不同环境变量的 creat-react-app 项目设置 DevOps 构建?

此时,在您的构建定义中使用 Power-Shell 脚本任务来获取源分支名称,然后根据分支名称设置环境变量,恐怕是一个不错的选择。因为构建管道中尚不支持嵌套变量。

PowerShell 脚本如:

$branch = $Env:Build_SourceBranchName
Write-Host "Current branch is $branch"
if ($branch -eq "Dev")
{
  Write-Host ("##vso[task.setvariable variable=testvar]testvalue")
}
else (($branch -eq "master") -or (($branch -eq "release")))
{
  Write-Host ("##vso[task.setvariable variable=testvar2]testvalue2")
}

在构建期间检查Logging 命令以获取更多详细信息。

此外,对于变量组,我们可以使用每个环境的 VSTS 变量组进行发布定义,但它不适用于构建定义。检查此线程以获取一些详细信息。

希望这可以帮助。