Мы пытаемся использовать Azure DevOps для создания наших веток git и создания пакетов NuGet с помощью команды NuGet Pack, мы хотим автоматически создавать мастер, а также любые ветки функций, которые являются предварительными версиями.
Мы попытались установить формат номера сборки:
$ (BuildDefinitionName) _ $ (Дата: ггггMMdd). $ (BuildID). $ (Rev: .r) $ (Build.SourceBranchName)
Это дает нам ошибку:
[ошибка] Не удалось найти данные о номере версии в следующей переменной среды: BUILD_BUILDNUMBER. Значение переменной должно содержать подстроку с целыми положительными числами или.
Я установил формат номера сборки на 1.0.0-alpha, который работал, но в списке артефактов он отображается как 1.0.0.
Как мы можем использовать CI в Azure Devops для создания главной и всех наших функциональных веток, создания пакетов NuGet и применения имени ветки к версии NuGet, чтобы мы могли использовать эти пакеты в нашей тестовой среде и тестировать ветвь функций изолированно?
почему бы вам не настроить триггер сборки? почему вас волнует название сборки? — person user351711 schedule 18.05.2019
Поскольку нам нужен единый конвейер сборки, мы не хотим создавать по одному для каждой функциональной ветки. Затем мы хотим взять пакет NuGet, в названии которого есть ветвь функции, и развернуть его для тестирования. — person user351711 schedule 18.05.2019
Мы рады альтернативным предложениям по построению функциональных веток, развернутым с помощью NuGet, которые не требуют изменения конвейеров сборки для каждой новой функциональной ветки. — person user351711 schedule 18.05.2019
@ user351711 Вы пробовали $(Build.DefinitionName)
и $(Build.BuildId)
(возможно, ошибка связана с синтаксическими ошибками среды)? — person user351711 schedule 19.05.2019
Не запускается ли конвейер из-за указанной вами ошибки или не удается выполнить конкретный шаг? Почему NuGet помечен? — person user351711 schedule 20.05.2019
Прошу прощения за поздний ответ, надеюсь, он вам поможет.
Боюсь, что мы не сможем использовать
$(Build.SourceBranchName)
в формате номера сборки в качестве версии nuget. После того, как я попробовал номер сборки в различных форматах, я обнаружил, что мы можем использовать только числовые данные в качестве версии nuget при использовании номера сборки в качестве версии nuget, в противном случае мы получим ошибку, как и вы:Затем создаю ветку с числовыми данными, например
9
, работает нормально.Итак, в качестве теста мы не могли применить имя ветки (String) к версии NuGet при использовании номера сборки в качестве версии nuget.
В качестве обходного пути я использую параметр
Use an environment variable
, а затем определяю переменнуюnugetversion
со значением$(Major).$(Minor).$(Patch)-$(Build.SourceBranchName)
:С помощью этого обходного пути мы можем использовать имя ветки в качестве версии пакета nuget, но у него также есть некоторые ограничения, то есть мы не могли использовать некоторые предопределенные переменные, такие как
$(Rev:.r)
,$(BuildID)
, это означает, что мы не можем автоматически увеличивать версию пакета nuget.Надеюсь это поможет.
Спасибо за ответ, в конце концов я тоже попал сюда благодаря форуму в MSDN, где все жаловались, что формат номера сборки удаляет текст. Надеюсь, это поможет кому-то еще сэкономить часы, которые я потерял. — person user351711; 23.05.2019