Привет, у меня есть выпуск, который автоматически помечает фиксацию выпуска в исходном репозитории с помощью некоторых команд 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 из сценария в конвейере выпуска?
да, я могу запустить приведенную выше PowerShell, создавать и отправлять теги в репозиторий ADO с помощью команд git, но дополнительная информация о том, когда тег был зафиксирован и кто его создал, никогда не добавляется в пользовательский интерфейс тегов в ADO.
Я могу воспроизвести то же самое с вашим кодом в конвейере выпуска:
Это связано с тем, что облегченные теги отображаются с именем тега и фиксацией, только аннотированные теги отображаются с именем тега, сообщением, фиксацией, тегом и датой создания (ссылка на документ ).
Пожалуйста, оставьте комментарий при добавлении тега: 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
, который вы хотите добавить тег, предоставьте разрешение на идентификацию.
Как предоставить учетные данные для git user.name, указанного в скрипте? У меня возникают проблемы с аутентификацией, когда я пробую ваше решение и пытаюсь выяснить, как предоставить сценарию необходимые учетные данные.
В конвейере выпуска stage->agent job-> отметьте опцию Allow scripts to access the OAuth token
, чтобы команда git использовала ее для добавления тегов. Я отредактирую с подробностями.
Спасибо, похоже, это помогло, хотя я обновил команду push следующим образом: git push https://:$env:[email protected]/MYORG/MYPROJECT/_git/MYREPO --tags
Рад знать, что это работает. Да, вы также можете использовать идентификатор в команде push. Приятного кодирования!
Можете ли вы обнаружить эти различия и локально? Как они выглядят, преимущественно с точки зрения вывода
git
CLI? Кроме того, можете ли вы воспроизвести это локально? Какой пользователь выполняет эти команды? Тем не менее, существуют так называемые аннотированные и облегченные теги. Объясняет ли это разницу?