Azure Devops CI - Построить только отмеченные коммиты в указанной c ветви - PullRequest
0 голосов
/ 16 марта 2020

Нажатие на ветку dev запускает сборку. Но я хочу создать сборку только в том случае, если коммит в ветви dev имеет тег с форматом «?. ??. ??.?».

trigger:
  - dev

В документации я могу найти только способ запуска по тегу ИЛИ ветви. Как я могу иметь два условия: тег и фиксация в спецификационной ветке c?

1 Ответ

1 голос
/ 17 марта 2020

В качестве обходного пути вы можете использовать несколько заданий (если ваш конвейер имеет несколько заданий, вы можете использовать несколько этапов) в своем конвейере для достижения вышеуказанного требования.

Добавить дополнительное задание (или этап) (ie. Задание A), чтобы получить теги, связанные с коммитом. А затем используйте скрипт проверки, если тег имеет определенный формат, если нет, то не удается выполнить задание. Тогда и установить другую работу зависит от этой работы. Проверьте здесь для получения дополнительной информации о зависимостях и условиях

Так что ваше задание (ie .Job B), которое создает ваш проект, будет выполнено только в том случае, если дополнительное задание выполнено успешно. Пожалуйста, проверьте ниже пример yaml:

trigger: 
  branches:
    include:
      - dev    
pool:
  vmImage: "ubuntu-latest"

jobs:     
- job: A
  steps:
    - powershell: |
        #get the tags associated to the commit
        $tags = git describe --exact-match $(Build.SourceVersion) 
        # check the tag format
        if($($tags) -notmatch '.\...\...\..'){exit 1}

- job: B
  dependsOn: A
  condition: succeeded('A')
  steps: 
      - powershell: |
          $tags = git describe --exact-match $(Build.SourceVersion)
          echo $($tags)
...