При отправке тегов в Azure Devops с помощью команд Powershell не задается информация о тегах

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

cd $(Agent.ReleaseDirectory)\_repo_root
git checkout $(Build.SourceVersion)
git tag $(RELEASE_TAG)
git push --tags

Write-Host tagged $(RELEASE_TAG) on commit $(Build.SourceVersion)

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

Версия 4.1.0 была добавлена ​​вручную через диалоговое окно ADO, но версии > 4.2 были созданы с помощью приведенного выше сценария. Есть ли способ предоставить эту информацию ADO из сценария в конвейере выпуска?


50
1

Ответ:

Решено

Я могу воспроизвести то же самое с вашим кодом в конвейере выпуска:

Это связано с тем, что облегченные теги отображаются с именем тега и фиксацией, только аннотированные теги отображаются с именем тега, сообщением, фиксацией, тегом и датой создания (ссылка на документ ).

Пожалуйста, оставьте комментарий при добавлении тега: git tag $(RELEASE_TAG) -m "test tag".

Кроме того, вы используете идентификаторы сборки с ограниченной областью, чей токен $(system.accesstoken) предназначен для отправки тега в репозиторий, идентификатор не включает личную информацию, такую ​​​​как имя или адрес электронной почты. Вам нужно добавить информацию о пользователе с помощью команды git config.

Код ниже работает:

cd "$(Agent.ReleaseDirectory)\_repo_root"
git checkout $(Build.SourceVersion)
git config --global user.name "testuser"            # add user info and email
git config --global user.email "[email protected]"
git tag $(RELEASE_TAG) -m "test tag"                # add comment for tag
git push --tags
Write-Host tagged $(RELEASE_TAG) on commit $(Build.SourceVersion)

Он имеет информацию о теге, как показано ниже:

Добавьте еще:

В конвейере выпуска отметьте опцию Allow scripts to access the OAuth token, чтобы разрешить команде git использовать идентификатор сборки с ограниченной областью действия.

Как указано в приведенной выше ссылке, существует два типа идентификаторов сборки, мой пример ниже для справки. При настройке проекта подтвердите личность, это идентификатор сборки в рамках проекта ({Project Name} Build Service ({Org Name})) на моей стороне.

На target repo, который вы хотите добавить тег, предоставьте разрешение на идентификацию.