Как автоматически выполнить команду git tag -a после завершения запроса на вытягивание в Azure Devops?

Как добавить пользовательские теги с аннотациями в master после завершения запросов на вытягивание (PR), автоматически?

Больше предыстории:

  • Использование azure-pipelines.yml
  • Политика ветвления на master для принудительного использования PR
  • У нас есть репозиторий, в котором хранятся шаблоны конвейеров Azure Devops («репозиторий шаблонов DevOps»).
  • В других репозиториях есть корневой файл конвейера, который ссылается на репозиторий "шаблона DevOps".
  • Мы используем SEMVER для маркировки наших продуктов, включая репозиторий шаблонов DevOps.
  • В корневых конвейерах мы хотим привязать репозиторий шаблонов DevOps к выпуску SEMVER.
  • We currently tag manually with each of the following to point to the merge commit that occurred after the PR completed
    • "vMAJOR.MINOR.PATCH"
    • "vMAJOR.MINOR"
    • "vMAJOR"

Пин на MAJOR только пример:

resources:
  repositories:
    - repository: templates
      type: git
      name: template_devops_pipelines
      ref: "refs/tags/v1"

person Adrian Torrie    schedule 05.03.2020    source источник
comment
Вы можете рассмотреть возможность использования этого оставьте api в конвейере для создания тегов git.   -  person LoLance    schedule 06.03.2020
comment
Похоже, что тогда нам нужен конвейер тегов, потому что наши PR-слияния не завершаются, пока не будет завершена стадия prod.   -  person Adrian Torrie    schedule 12.03.2020
comment
Если вы настроили политику ветвления, вы можете создать конвейер (включить CI) для вызова остальных API, это может удовлетворить ваши потребности.   -  person LoLance    schedule 13.03.2020


Ответы (1)


Образец конвейера тегов, который я использую:

trigger:
  - main

variables:
  user.email: "[email protected]" 
  user.name: "DevOps"
  defaultBranch: "main"
  major: 1
  minor: 0
  patch: $[counter(variables['patch'], 2)]

name: $(major).$(minor).$(patch)

steps:
  - checkout: self
    persistCredentials: true
  - script: |
      git config user.email ${{variables['user.email']}}
      git config user.name ${{variables['user.name']}}
    displayName: 'configure git credentials'
  - script: | 
      git tag "$(Build.BuildNumber)"
      git push origin "$(Build.BuildNumber)"
    displayName: 'git tag'
    condition: eq(variables['Build.SourceBranchName'], variables['defaultBranch'])

В основном вам понадобятся три вещи:

  1. оформить заказ с помощью persistCredentials, чтобы ваш конвейер мог пометить и отправить позже
  2. настроить git user.email и user.password
  3. пометить и нажать

На последнем шаге вам нужно будет назначить разрешения Contribute для учетной записи службы сборки конвейера. Перейдите к: Project Settings -> Repositiories -> {your repo} -> Security, найдите пользователя {your organization} Build Service и установите для параметра "Участие" значение Allow.

person qbik    schedule 03.04.2021