如何根据构建的分支为具有不同环境变量的 create-react-app 项目设置 DevOps 构建?
How to setup DevOps build for creat-react-app project with different environment vars depending on built branch?
我们有一个 create-react-app 项目,它从环境中获取一些构建参数(例如 Auth0 配置),这意味着这些环境变量会影响反应构建。
我们正在为此项目开发 Azure DevOps 构建管道,虽然在管道的变量页面上定义变量很简单,但如何根据正在构建的分支以不同方式设置它们并不明显。
例如,我们希望 dev
分支在 Auth0 中构建使用或开发租户,而发布和主分支应该在 Auth0 中构建使用或生产租户(相同的变量,两个不同的值)。
有 documented/supported 方法吗?或者一些 "best practice"?
我了解到您可以从 PowerShell 脚本修改变量,例如就像在 中一样。这是最好的方法吗?脚本如何检查正在构建的分支,以选择正确的值集?
我还发现DevOps有一个变量组的概念。我还没有读过它,但是为每个分支(或分支模式)定义一个变量组并让脚本 select 应用哪个组是否是一种好方法?怎么样?
How to setup DevOps build for creat-react-app project with different environment vars depending on built branch?
此时,恐怕在构建定义中使用 Power-Shell 脚本任务来获取源分支名称,然后根据分支名称设置环境变量是一个不错的选择。因为构建管道尚不支持嵌套变量。
The 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, we could use VSTS Variable Groups per environment for release definition, but it not work for build definition. Check 一些细节。
希望这对您有所帮助。
我们有一个 create-react-app 项目,它从环境中获取一些构建参数(例如 Auth0 配置),这意味着这些环境变量会影响反应构建。
我们正在为此项目开发 Azure DevOps 构建管道,虽然在管道的变量页面上定义变量很简单,但如何根据正在构建的分支以不同方式设置它们并不明显。
例如,我们希望 dev
分支在 Auth0 中构建使用或开发租户,而发布和主分支应该在 Auth0 中构建使用或生产租户(相同的变量,两个不同的值)。
有 documented/supported 方法吗?或者一些 "best practice"?
我了解到您可以从 PowerShell 脚本修改变量,例如就像在
我还发现DevOps有一个变量组的概念。我还没有读过它,但是为每个分支(或分支模式)定义一个变量组并让脚本 select 应用哪个组是否是一种好方法?怎么样?
How to setup DevOps build for creat-react-app project with different environment vars depending on built branch?
此时,恐怕在构建定义中使用 Power-Shell 脚本任务来获取源分支名称,然后根据分支名称设置环境变量是一个不错的选择。因为构建管道尚不支持嵌套变量。
The 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, we could use VSTS Variable Groups per environment for release definition, but it not work for build definition. Check
希望这对您有所帮助。