我正在尝试学习如何为Azure Devops使用新的yaml配置的管道系统,并且在理解变量应该工作的方式方面遇到了一些麻烦。
设置管道时,它创建了一个文件azure-pipelines.yml并将其提交给master分支。
默认情况下,此文件看起来像这样...
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
我的项目使用以下构建配置进行设置...“ prod”,“ staging”,“ develop”。
我感到困惑的是,我应该在哪里覆盖实际管道的这些默认变量?
我可以直接在此文件中修改值,但这实际上是行不通的。当我将更改从“ master”合并回“ staging”等时,大概这些较低环境的管道将尝试使用“ prod”配置进行构建。
肯定有某种方法可以独立于源代码配置变量。
在2个地方可以看到添加变量的选项...
当我为管道选择“编辑”时,在右上角,旁边有一个“变量”按钮。
我可以在其中添加变量,但是它们似乎没有任何作用。当我运行管道时,不会应用它们。
另外,为了使情况更加混乱,当我选择“运行管道”时,还有一个选项可以定义变量,但是同样,这些变量似乎也无能为力。构建仍仅使用yaml文件中的预定义值运行。
答案 0 :(得分:2)
同意Shayki Abramczyk。此方法可以手动覆盖UI界面上的变量值。
我想分享一种将值自动附加到变量的方法。
您可以使用Expressions来判断不同的情况(例如build分支)。然后您可以为不同情况设置值。
这里是一个例子:
trigger:
- '*'
pool:
vmImage: 'windows-latest'
variables:
${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
buildConfiguration: Prod
${{ if eq(variables['Build.SourceBranchName'], 'staging') }}:
buildConfiguration: Staging
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
# Write your PowerShell commands here.
Write-Host $(buildConfiguration)
此示例代码可以根据不同的触发器分支名称选择相应的值。 (母版:产品,登台:登台)
希望这会有所帮助。
答案 1 :(得分:0)