天青管道-根据触发分支设置变量

时间:2019-09-26 22:14:03

标签: azure powershell azure-devops devops azure-powershell

我正在尝试使用powershell根据触发的分支设置BuildConfiguration

有人知道该怎么做吗?

switch($env:Build.SourceBranchName) {
   'master' {$env:BuildConfiguration = Release; break;} 
   'staging' {$env:BuildConfiguration = Staging; break;} 
   'develop' {$env:BuildConfiguration = Dev; break;} 
}

3 个答案:

答案 0 :(得分:5)

您可以在 yaml 管道的顶部设置变量并随意使用它们。

variables:
  ${{ if eq(variables['Build.SourceBranchName'], 'main') }}: 
    deployTarget: prod
  ${{ if eq(variables['Build.SourceBranchName'], 'develop') }}: 
    deployTarget: dev

并使用:

- task: CmdLine@2
  displayName: Display deployment
  inputs:
  script: |
    echo '${{ variables.deployTarget }}'

答案 1 :(得分:4)

最终与之合作

switch(${env:BUILD_SOURCEBRANCH}) {
   'refs/heads/master' {Write-Host "##vso[task.setvariable variable=BuildConfiguration]Release"; } 
   'refs/heads/staging' {Write-Host "##vso[task.setvariable variable=BuildConfiguration]Staging"; } 
   'refs/heads/develop' {Write-Host "##vso[task.setvariable variable=BuildConfiguration]Dev"; } 
}

答案 2 :(得分:1)

是的,很高兴您能够弄清楚!

还要注意,相同的task.setvariable命令可以帮助设置变量,以供稍后在管道中的一个或多个后续步骤使用。有关示例,请参阅this文档。这些功能偶尔会派上用场。

其他阅读内容: Variable group是另一项有趣的功能,它可以存储跨管道可用的值。