Label Sources с $(GitVersion.NuGetVersion) создает тег с именем переменной, а не значением
После успешной сборки, настроив формат метки как $(GitVersion.NuGetVersion)
результирующий тег устанавливается на $(GitVersion.NuGetVersion)
не фактическое расширенное значение этой переменной.
В журнале выходных данных сборки есть 2 раздела / плана: Сборка и Завершение сборки.
Предположительно, вся переменная context/state теряется при перемещении агента сборки во второй раздел / план.
Как я должен пометить источник с результирующим GitVersion, если контекст переменных GitVersion потерян во время раздела Finalize Build?
2 ответа
Конкретные шаги для достижения желаемого результата:
- Настройка VSTS Project/ Репозиторий / Сборка предварительных требований:
https://www.visualstudio.com/en-us/docs/build/scripts/git-commands - Git Docs для пометки (для полноты):
https://git-scm.com/book/en/v2/Git-Basics-Tagging
Я добавил 2 задачи командной строки (лучше использовать пакетную задачу) с помощью Tool: git
:
- Аргументы:
tag -a $(GitVersion_NuGetVersion) -m "Auto-Tagged v$(GitVersion_NuGetVersion) by Build ($(Build.BuildId))"
- Аргументы:
push origin $(Build.BuildNumber)
Я ответил на ваш вопрос в выпуске на GitHub:
Я не думаю, что мы можем что-то сделать в задаче GitVersion по этому поводу, если VSTS не предоставляет соответствующий API. GitVersion в настоящее время просто определяет переменные, используя
##vso[task.setvariable]value
командование Переменные явно определены в контексте задачи и поэтому доступны для последующих задач, но не вне контекста.Особый случай - это номер сборки, для которой существует специальная команда
##vso[build.updatebuildnumber]build number
который мы используем.Обходным путем может быть добавление дополнительной задачи, которая добавляет тег, который будет работать, поскольку задача будет находиться в том же контексте и, следовательно, иметь доступ к переменной.