Как мне получить TFS 2015 для анализа 3-х значных версий для упаковки NuGet?
Когда я установил определение сборки TFS 2015, то есть создание пакета NuGet, я установил формат номера сборки с помощью:
. $(BuildDefinitionName)_$(Major) $(Minor)$(ред:.r)
Где Major и Minor или просто переменные, которые я определил. Когда я использую шаг "NuGet Packager", я получаю сообщение об ошибке:
Не удалось найти данные номера версии в BUILD_BUILDNUMBER.
Когда я использую 4 цифры, я не получаю ошибку. Как мне заставить его работать с семантическим версионированием?
2 ответа
Я нашел решение:
1) Вам необходимо получить доступ к вашему компьютеру Агента сборки
2) Перейдите туда, где установлен агент сборки. Для меня -> C: \ BuildAgent \ tasks \ NuGetPackager
3) Вы увидите версии папок, так что зайдите в последнюю.
4) Измените скрипт PowerShell, NuGetPackager.ps1
Найти -> $VersionRegex = "\d+.\ D +. \ D +. \ D +"
И заменить на -> $VersionRegex = "\d+.\ D +. \ D +. \ D +|\d+.\ D +. \ D +"
5) А затем сохраните скрипт.
Что я делаю, так это модифицирую регулярное выражение, чтобы сказать "Поиск шаблона #.#.#.# OR #.#.# В строке номера сборки". Тогда как раньше он искал только "#.#.#.#".
Теперь, когда вы выполните сборку, агент сборки TFS сможет проанализировать версию сборки:
Установите для рабочей папки значение по умолчанию: C:\BuildAgent\tasks\NuGetPackager\0.1.58
Выполнение сценария powershell: C:\BuildAgent\tasks\NuGetPackager\0.1.58\NuGetPackager.ps1
Получение номера версии из сборки
BUILD_BUILDNUMBER: Planning.Domain.Library-CI_1.0.7
Версия: 1.0.7
Если вы посмотрите на https://github.com/Microsoft/vsts-tasks/blob/master/Tasks/NugetPackager/NuGetPackager.ps1:
if ($b_versionByBuild)
{
Write-Verbose "Autoversion: Getting version number from build"
##Get Version from Build
# Regular expression pattern to find the version in the build number
# and then apply it to the assemblies
$VersionRegex = "\d+\.\d+\.\d+(?:\.\d+)?"
Эта фиксация была получена из трех сборочных номеров: https://github.com/Microsoft/vsts-tasks/commit/233c112bc06b91964a559090b8acfd4452cdec0b
До этого коммита регулярное выражение было просто \d+\.\d+\.\d+\.\d+
, Поэтому, возможно, у вас есть устаревший код задачи в вашей TFS.
Я только что проверил свой локальный TFS 2015. Он не может разобрать версию 3 номера.