Конвейер yaml Azure DevOps: как узнать, какая ветвь проверяется?

В настоящее время у меня есть мой конвейер yaml и исходный код моего приложения в двух разных ветвях, и я пытался найти доказательства того, что то, что проверяется, действительно является ветвью исходного кода, а не ветвью моего конвейера, но я вижу, что вызов проверки в конце git fetch относится к определенной фиксации, а не к указанному имени ветки. Это мое определение ресурсов:

resources:
  repositories:
  - repository: RepoName
    type: git
    name: 'MyRepository'  # repository in Azure DevOps
    trigger:
      branches:
        include:
        - UAT

и на одном из моих шагов я делаю checkout: RepoName. Я ожидал git checkout UAT после извлечения исходного кода, но, как уже было сказано, я вижу проверку конкретной фиксации. Как я могу быть уверен, что ветка проверяется?


person whatever    schedule 14.12.2020    source источник


Ответы (3)


По умолчанию конвейер сборки проверяет единственную фиксацию, которая инициировала текущий запуск конвейера. Когда вы вручную или с помощью других методов запускаете конвейер, запуск проверяет последнюю фиксацию в ветке по умолчанию или в указанной вами ветке.

Однако независимо от того, какие методы запускают выполнение конвейера, вы можете использовать предопределенную переменную сборки Build.SourceBranch или Build.SourceBranchName, чтобы получить имя ветки, из которой извлекается фиксация.

Для получения дополнительных сведений см. Использовать предопределенные переменные.

Кроме того, вы также можете перейти в корень локального репозитория и выполнить команду git филиал. Эта команда выведет имя текущей ветки. Например:

git branch --show-current

Если текущая ветка является ведущей, вывод:

master
person Bright Ran-MSFT    schedule 01.01.2021

Вам нужно установить ref

resources:
  repositories:
  - repository: string  # identifier (A-Z, a-z, 0-9, and underscore)
    type: enum  # see the following "Type" topic
    name: string  # repository name (format depends on `type`)
    ref: string  # ref name to use; defaults to 'refs/heads/master'
    endpoint: string  # name of the service connection to use (for types that aren't Azure Repos)
    trigger:  # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos)
      branches:
        include: [ string ] # branch names which will trigger a build
        exclude: [ string ] # branch names which will not
      tags:
        include: [ string ] # tag names which will trigger a build
        exclude: [ string ] # tag names which will not
      paths:
        include: [ string ] # file paths which must match to trigger a build
        exclude: [ string ] # file paths which will not trigger a build

так было бы

resources:
  repositories:
  - repository: RepoName
    type: git
    name: 'MyRepository'  # repository in Azure DevOps
    ref: 'UAT'
    trigger:
      branches:
        include:
        - UAT
person Krzysztof Madej    schedule 14.12.2020
comment
Могу я попросить вас немного прокомментировать ваше предложение? Чего добивается добавление ref и что происходит, если его нет? Спасибо - person whatever; 15.12.2020
comment
Сделано, как было предложено, но я все еще вижу что-то вроде git checkout --progress --force ff8a52b0b7da6599d233d2d6565f085e9344d81f, и даже увеличивая подробность журнала, нет никаких доказательств того, какая ветка проверяется - person whatever; 15.12.2020

В свойстве ref вы можете установить это так: ref: 'refs/heads/UAT'

resources:
  repositories:
  - repository: RepoName
    type: git
    name: 'MyRepository'  # repository in Azure DevOps
    ref: 'refs/heads/UAT'
    trigger:
      branches:
        include:
        - UAT

Затем в steps нужно добавить - checkout: RepoName

Вот мой образец, к которому вы можете обратиться:

pool:
  vmImage: 'windows-2019'

trigger: none

resources:
      repositories:
      - repository: RepoName
        type: git
        name: '{proName}/{repoName}'  # repository in Azure DevOps
        ref: 'refs/heads/dev'    

steps:
  - checkout: RepoName

На странице сводки сборки:

введите описание изображения здесь

В журнале:

введите описание изображения здесь

person Hugh Lin    schedule 18.12.2020
comment
Имеет ли значение писать refs/head/dev вместо простого dev? - person whatever; 20.12.2020
comment
Здесь я просто следую синтаксис в документе, фактические результаты тестирования не показывают никакой разницы. - person Hugh Lin; 21.12.2020