Ваш YAML кажется правильным, но в Azure DevOps что-то неясно. Однако вы можете использовать это как обходной путь:
trigger:
- master
jobs:
- job: Test
pool:
vmImage: 'ubuntu-latest'
variables:
varOS: $(Agent.OS)
steps:
- pwsh: |
$testVar = ''
$os = '$(Agent.OS)'
if ($os -eq 'Windows_NT') {
$testVar = "I am Windows";
} elseif ($os -eq 'Linux') {
$testVar = "I am Linux";
}
Write-Host $testVar
Write-Host "##vso[task.setvariable variable=HelloOS;isOutput=true]$testVar"
name: Initialize
- pwsh: |
echo $env:TestVar
echo $env:OS
echo $env:AGENT_OS
echo $env:IsMaster
printenv
env:
OS: $(varOS)
TestVar: $(Initialize.HelloOS)
${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master')}}:
IsMaster: "true"
для этой сборки я получил:
I am Linux
Linux
Linux
true
Я пробовал несколько подходов, также помещая условную настройку в раздел переменных. Но только это дало ожидаемый результат. Конечно, поскольку у вас есть доступ к $env:AGENT_OS
, вы можете поместить этот условный logi c прямо на целевой шаг. Я просто предположил, что вы хотите иметь TestVar
где-то еще.