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

时间:2019-01-14 08:27:40

标签: reactjs azure-devops environment-variables create-react-app build-pipeline

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

我们正在为该项目开发Azure DevOps构建管道,虽然可以在管道变量页面上轻松定义变量,但是如何根据正在构建的分支来不同地设置变量并不明显。

例如,我们希望dev分支可以在Auth0中使用或开发租户构建,而发布分支和主分支应该在Auth0中使用或生产租户构建(相同变量,两个不同的值)。

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

我了解到您可以通过PowerShell脚本修改变量,例如就像在this post中一样。那是最好的方法吗?脚本如何检查正在建立的分支,以选择正确的值集?

我还发现DevOps具有变量组的概念。我还没有读过它,但是在每个分支(或分支模式)中定义一个变量组并让脚本选择要应用的组是一个好方法吗?怎么样?

1 个答案:

答案 0 :(得分: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 Command,了解更多详细信息。

此外,对于variable groups,我们可以将每个环境的VSTS变量组用于 release 定义,但不适用于 build 定义。检查this thread以获得一些详细信息。

希望这会有所帮助。