Label Sources с $(GitVersion.NuGetVersion) создает тег с именем переменной, а не значением

После успешной сборки, настроив формат метки как $(GitVersion.NuGetVersion)результирующий тег устанавливается на $(GitVersion.NuGetVersion) не фактическое расширенное значение этой переменной.

В журнале выходных данных сборки есть 2 раздела / плана: Сборка и Завершение сборки.

Предположительно, вся переменная context/state теряется при перемещении агента сборки во второй раздел / план.

Как я должен пометить источник с результирующим GitVersion, если контекст переменных GitVersion потерян во время раздела Finalize Build?

https://github.com/Microsoft/vsts-agent/issues/716

2 ответа

Решение

Конкретные шаги для достижения желаемого результата:

  1. Настройка VSTS Project/ Репозиторий / Сборка предварительных требований:
    https://www.visualstudio.com/en-us/docs/build/scripts/git-commands
  2. Git Docs для пометки (для полноты):
    https://git-scm.com/book/en/v2/Git-Basics-Tagging

Я добавил 2 задачи командной строки (лучше использовать пакетную задачу) с помощью Tool: git:

  1. Аргументы: tag -a $(GitVersion_NuGetVersion) -m "Auto-Tagged v$(GitVersion_NuGetVersion) by Build ($(Build.BuildId))"
  2. Аргументы: push origin $(Build.BuildNumber)

Я ответил на ваш вопрос в выпуске на GitHub:

Я не думаю, что мы можем что-то сделать в задаче GitVersion по этому поводу, если VSTS не предоставляет соответствующий API. GitVersion в настоящее время просто определяет переменные, используя ##vso[task.setvariable]value командование Переменные явно определены в контексте задачи и поэтому доступны для последующих задач, но не вне контекста.

Особый случай - это номер сборки, для которой существует специальная команда ##vso[build.updatebuildnumber]build number который мы используем.

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

Другие вопросы по тегам