#azure-devops #azure-pipelines
Вопрос:
У меня есть многоступенчатый конвейер, в котором я хочу, чтобы задания определенного этапа выполнялись только при подаче запроса на вывод в ветвь разработки.
Приведенный ниже YAML работает, но задачи PS пропускаются, даже когда я делаю запрос на вывод в ветку разработки. Я также попытался удалить условие ветви источника, но безрезультатно.
trigger:
- Development
- Testing
- Acceptance
stages:
- stage: Development
condition: and(eq(variables['Build.SourceBranch'], 'refs/heads/Development'), eq(variables['Build.Reason'], 'PullRequest'))
jobs:
- job: "FirstValidationJob"
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'Write-Host "Hello World!"'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'Write-Host "Hi mom, this is me running PowerShell code on Azure!"'
Ответ №1:
Вам нужно проверить System.PullRequest.TargetBranch
свой PR, а не ветвь функций Build.SourceBranch
, которая вызвала сборку.
condition: and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/Development'))
Комментарии:
1. Не могу поверить, что я пропустил это… Спасибо тебе за вторую пару глаз!
2.Вы заметили, что изменился весь путь переменной, а не только последняя часть? от
Build.SourceBranch
доSystem.PullRequest.TargetBranch
docs.microsoft.com/en-US/azure/devops/pipelines/build/…3. В этом случае я рекомендую задачу сценария, в которой вы повторяете отдельные условия.
-script: echo on amp; echo $(variables['Build.Reason'])
и так далее4. Вы работаете в службах Azure DevOps или на готовом сервере (который из них)?
5. Система. Вытяните запрос. Целевая ветвь недоступна в шаблонах для разработчиков Azure docs.microsoft.com/en-us/azure/devops/pipelines/build/…