TFS 2018 - Сборка предварительных выпусков - PullRequest
0 голосов
/ 12 июня 2018

Я использую «TFS 2018 Update 2» и пытаюсь собрать пакет, помеченный как предварительный релиз, в соответствии с семантической microsoft

Я пытался использовать .nuspec файл вставка (например: 1.0.0-бета и изменение формата номера сборки как: $ (BuildDefinitionName) _ $ (год: гггг). $ (месяц). $ (деньOfMonth)$ (Rev: .r) $ (Суффикс), устанавливающий переменную $ (Суффикс) во время очереди.

Каждая попытка не удалась: пакет никогда не содержит суффикс, чем никогда не помечается как предварительный выпуск. Я вижучто команда пакета nuget никогда не содержит суффикса (отсутствует «-beta» после «2018.6.12.9»). В моей тестовой сборке $ Суффикс имеет значение «-beta» :

nuget.exe pack C: \ agent_work \ 4 \ s \ DotNetClassicLibrary \ DotNetClassicLibrary.csproj -NonInteractive -OutputDirectory C: \ agent_work \ 4 \ a -Настройка параметров = отладка-версия 2018.6.12.9 -Верность Подробнее

1017*

Задача сборки в TFS:

"DotNetClassicLibrary / Build DotNetClassicLibrary_2018.6.12.9-beta / Job / NuGet pack "

Поэтому я уверен, что переменная назначена из-за наличия суффикса " - beta " впуть.

Здесь находится конфигурация задачи пакета nuget

Nuget Pack

Это формат номера сборки

enter image description here

1 Ответ

0 голосов
/ 13 июня 2018

Я мог бы воспроизвести твой сценарий на моей стороне.На мой взгляд, задача Nuget pack с номером сборки не поддерживает символы или цифры.Вы можете проверить эту задачу и попытаться ее изменить.

case "byBuildNumber":
                tl.debug("Getting version number from build number")

                if(tl.getVariable("SYSTEM_HOSTTYPE") === "release")
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_AutomaticallyVersionReleases"));
                    return;
                }

                let buildNumber: string =  tl.getVariable("BUILD_BUILDNUMBER");
                tl.debug(`Build number: ${buildNumber}`);

                let versionRegex = /\d+\.\d+\.\d+(?:\.\d+)?/;
                let versionMatches = buildNumber.match(versionRegex);
                if (!versionMatches)
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_NoVersionFoundInBuildNumber"));
                    return;
                }

                if (versionMatches.length > 1)
                {
                    tl.warning(tl.loc("Warning_MoreThanOneVersionInBuildNumber"))
                }

                version = versionMatches[0];
                break;

В качестве альтернативы вы можете выбрать Nuget custom и указать команду упаковки там с параметром -version $(Build.BuildNumber) Я пытался на моей стороне, это работает.

...