Как по условию я могу заполнить список в yaml конвейера Azure?
${{ if eq(variables['Build.SourceBranch'], variables['var-1']) }}:
my-list:
- element 1
В настоящее время приведенный выше пример работает, но мне нужно иметь несколько значений, заполненных на основе разных условий. Я ожидал, что что-то вроде этого сработает, но это не так:
my-list:
${{ if eq(variables['Build.SourceBranch'], variables['var-1']) }}:
- element 1
${{ if eq(variables['Build.SourceBranch'], variables['var-2']) }}:
- element 2
${{ if eq(variables['Build.SourceBranch'], variables['var-3']) }}:
- element 3
Или можно сделать это с помощью скрипта и присвоить его переменной, представляющей собой массив строк, а затем установить для этой переменной значение my-list
Обратите внимание, что переменные имеют строковые значения — для массивов или сложных объектов необходимо использовать параметры.
Или можно сделать это с помощью скрипта и присвоить его переменной, представляющей собой массив строк, а затем установить для этой переменной значение my-list.
Да, вы можете установить переменные в скриптах.
Например, я могу использовать следующий код yaml, чтобы установить переменную с именем my-list на основе значения $(Build.SourceBranch)
.
trigger:
- none
pool:
vmImage: ubuntu-latest
steps:
- powershell: |
if ("$(Build.SourceBranch)" -eq "var-1") {
Write-Host "##vso[task.setvariable variable=my-list;isOutput=true]- element 1"
}
elseif ("$(Build.SourceBranch)" -eq "refs/heads/main") {
Write-Host "##vso[task.setvariable variable=my-list;isOutput=true]- element 2"
}
elseif ("$(Build.SourceBranch)" -eq "var-3") {
Write-Host "##vso[task.setvariable variable=my-list;isOutput=true]- element 3"
}
name: setVarStep
- powershell: |
Write-Host $(setVarStep.my-list)
Результат испытаний:
Когда я строю основную ветку, $(setVarStep.my-list)
— это - element 2
. Теперь вы можете использовать переменную в своем списке.
Мне нужно иметь несколько значений, заполненных на основе разных условий.
Ожидаемый вами метод должен быть достижим. Вам необходимо изменить форматирование и отступы ваших выражений.
Вот пример:
my-list:
- ${{ if eq(variables['Build.SourceBranch'], variables['var-1']) }}:
- element 1
- ${{ if eq(variables['Build.SourceBranch'], variables['var-2']) }}:
- element 2
- ${{ if eq(variables['Build.SourceBranch'], variables['var-3']) }}:
- element 3
В этом случае значение будет заполняться на основе разных условий.
Есть ли ошибка? Или список не содержит всех ожидаемых элементов?