я хочу создать конвейер, который будет отображать этап prod
только для ветвей release/
. Я разработал yaml следующим образом:
trigger:
- main
pr:
- main
stages:
- template: templates/infra-terraform-deploy.yml@templates
parameters:
# parameters
- template: templates/infra-terraform-deploy.yml@templates
parameters:
# parameters
- ${{ if startsWith( variables['Build.SourceBranchName'], 'refs/heads/release' ) }}:
- template: templates/infra-terraform-deploy.yml@templates
parameters:
# parameters
Но, к сожалению, последний этап всегда отсутствует в моем конвейере.
Как построить конвейер yaml в Azure Devops, который будет отображать последний этап только для ветвей, начинающихся с release
?
Учитывая ветку репозитория Git refs/heads/main
:
$(Build.SourceBranch)
вернется refs/heads/main
$(Build.SourceBranchName)
вернется main
Итак, вместо:
- ${{ if startsWith( variables['Build.SourceBranchName'], 'refs/heads/release' ) }}:
- template: templates/infra-terraform-deploy.yml@templates
parameters:
# parameters
Пытаться:
- ${{ if startsWith( variables['Build.SourceBranch'], 'refs/heads/release/' ) }}:
- template: templates/infra-terraform-deploy.yml@templates
parameters:
# parameters
Пытаться
- ${{ if startsWith( variables['Build.SourceBranchName'], 'release' ) }}:
или
- ${{ if startsWith( variables['Build.SourceBranch'], 'refs/heads/release' ) }}:
ссылка https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
Привет @Rui, спасибо, но я только что провел повторное тестирование, оба работают на моей стороне.
это будет работать для releases/1
, release/1
, release123456
- это не то, о чем спрашивает ОП.
На самом деле вам нужен дополнительный /
в обоих случаях.
Чтобы показать сцену prod
только для ветвей release/
, вам следует использовать
- ${{ if startsWith( variables['Build.SourceBranch'], 'refs/heads/release/' ) }}:
Возьмем, к примеру, ветку release/test1
, выведите значения Build.SourceBranchName
и Build.SourceBranch
:
Значение Build.SourceBranchName
— test1
вместо release/test1
. Так что не получится, если использовать - ${{ if startsWith( variables['Build.SourceBranchName'], 'release' ) }}:
Если вы используете - ${{ if startsWith( variables['Build.SourceBranch'], 'refs/heads/release' ) }}:
, этап prod
также покажет, соответствует ли исходная ветка чему-то вроде refs/heads/releasetest
.
Первое условие не работает.