Как мне получить 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 номера.

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