Условия конвейера Azure DevOps для исходной ветви и причины сборки

#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/…