Я использую новые функции сборки с поддержкой сценариев в Visual Studio Online (а не определения сборки XAML) и пытаюсь, чтобы номер версии сборки включал последний идентификатор фиксации Git целевого репозитория с использованием формата номера сборки.
Я использую следующий формат номера сборки:
$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion)
Это приводит к сгенерированному номеру версии 1.0.1234.
, т. е. значение SourceVersion пустое, что вызывает ошибку в VSO при постановке сборки в очередь. Я также попытался квалифицировать переменную, добавив к ней префикс Build.
с тем же результатом. Для проверки я изменил номер сборки на следующий формат:
$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceBranch)
Это правильно приводит к значению 1.0.1234.refs_heads_master
Я использовал Предопределенные переменные ссылка, а Build.SourceVersion указан как глобальная переменная.
Я делаю что-то не так, столкнулся с ошибкой или это так задумано и недоступно во время постановки сборки в очередь? Если это задумано, есть ли способ автоматически включить короткий идентификатор Git Commit ID в формат номера сборки?
Здесь я установил формат номера сборки в VSO:
Это ошибка, которую я вижу, когда явно не указываю Git CommitId:
400: Строка формата номера сборки $(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion) сгенерировала номер сборки 0.1.1. который содержит недопустимые символы, слишком длинный или заканчивается на '.'. Максимальная длина номера сборки составляет 255 символов. К недопустимым символам относятся '"', '/', ':', '‹', '>', '\', '|', '?', '@' и '*'.
$(MajorVersion).$(MinorVersion).$(Build.BuildId).$(Build.SourceVersion)
. Только что проверили как VSO, так и TFS 2015 в локальной среде. Вывод выглядит так:1.0.20.41f2983578f720695227a7a8a41ed3d7437efc30
. Вы уверены, что это не опечатка, вызывающая такое странное поведение на вашей стороне? - person Yan Sklyarenko   schedule 17.09.2015InvalidMacroInBuildNumberException
) означает, что формат номера сборки недействителен. Я имею в виду, что он ожидает, что Major.Minor.Build.Revision будут числами, а не этими идентификаторами и хэшами. Макрочасть $(Build.SourceVersion) работает, но вы не можете использовать ее в номере сборки. Другой ваш комментарий: идентификатор фиксации в Git — это длинный хеш,CS1234
— это формат набора изменений TFVC. - person Yan Sklyarenko   schedule 18.09.2015$(Build.SourceVersion)
, и только$(SourceVersion)
, и оба привели к пустому значению, если только я явно не указал полный идентификатор фиксации Git при постановке сборки в очередь. Поскольку это для непрерывной интеграции, мне нужно, чтобы последний идентификатор Git Commit был получен автоматически. В идеале я бы тоже хотел короткий хэш. Я должен уточнить, что это в формате номера сборки в VSO Scriptable Build (vNext), а не в определениях сборки XAML. - person GaryJL   schedule 18.09.2015