NPM с автоматическим версионированием пакета NuGet - PullRequest
0 голосов
/ 01 апреля 2019

Наша цель - иметь автоматическое управление версиями для пакетов npm и NuGet в определении выпуска Azure Pipelines

На данный момент мы используем задачу токенизации на основе значения rev, заменяя номера версий в файлах nuspec и package.json. Таким образом, мы получаем номера версий, такие как 1.0.1, 1.0.2… .. вот так, и автоматическое управление версиями достигается в определении выпуска

Но проблема в том, что когда релиз не удался, мы теряем эти цифры как наши номера версий, потому что значение rev увеличивается

Пример: если моя опубликованная версия артефактов - 1.0.1. Следующая версия для меня будет 1.0.2

Но если выпуск 1.0.2 не удался и если 1.0.3 успешен, мы получаем опубликованный номер как 1.0.3 здесь для конечного пользователя 1.0.2 отсутствует

Теперь нам нужна помощь для увеличения номера моей версии на основе последнего успешного выпуска или для сброса значения оборотов на основе успешного выпуска, либо для получения опубликованной версии артефактов и увеличения этого числа

Или любая другая лучшая практика для выполнения этой задачи будет полезна.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 апреля 2019

NPM с автоматическим контролем версий пакета NuGet

Боюсь, что не существует такого способа выполнить эту задачу напрямую.Потому что $(Rev:.r) это номер сборки в этот день.Используйте $(Rev:.r), чтобы каждая завершенная сборка имела уникальное имя.Когда сборка завершена, если больше ничего в номере сборки не изменилось, целочисленное значение Rev увеличивается на единицу.Это значение хранится в базе данных.

В качестве теста я создал задачу Inline Powershell для изменения значения при сбое задачи сборки / выпуска.

Я использую сценарий powershell Write-Host "##vso[build.updatebuildnumber]$newVersionNumber" для обновленияbuild.updatebuildnumber (я использую build.updatebuildnumber в качестве версии пакета nuget.) и задаю опцию Run this task как Только в случае сбоя предыдущей задачи :

enter image description here

Чтобы увидеть, какие переменные вы можете использовать для построения и выпуска конвейеров, проверьте следующие страницы: - Переменные сборки - Выпуск переменных .

Ниже приведены сценарии powershell для изменения build.updatebuildnumber:

$vstsCurrentVersionNumber = $Env:BUILD_BUILDNUMBER
$currentVersionNumber = $vstsCurrentVersionNumber.Split(".")
$revisionNumber = $currentVersionNumber[3]
$newRevisionNumber = [int]$revisionNumber -1
$newVersionNumber = $currentVersionNumber[0] + "." + 
$currentVersionNumber[1] + "." + $currentVersionNumber[2] + "." + 
$newRevisionNumber
$env:VersionNumber = $newVersionNumber

 Write-Host "Update Build Number To: $newVersionNumber"
 Write-Host "##vso[build.updatebuildnumber]$newVersionNumber"

Действительно, если задача сборки / выпуска не удалась, номер сборки будет изменен в этом здании .

Однако, когда мы выполняем сборку / выпуск в следующий раз, buildnumber/$(Rev:.r) все еще увеличивается в зависимости от последнего неудачного результата сборки :

enter image description here

В качестве обходного пути мы могли бы установить значение для версии пакета nuget, например 1.0.0.И добавьте задачу Inline Powershell, чтобы увеличить значение версии на единицу каждый раз, когда мы успешно собираем / выпускаем.Не выполняйте задачу Inline Powershell при сбое сборки / выпуска.

Надеюсь, это поможет.

...