Рубрики
Uncategorized

Управление версией пакетов на Azure DevOps

Правильно верните свои пакеты в вашем трубопроводе, прежде чем публиковать их. Tagged с Azure, DevOps, PowerShell, TFXCLI.

Этот блог был первоначально опубликован в Мой сайт И я думал, что могу поделиться этим здесь.

Сценарий

Сценарий для этого поста заключается в том, что у меня есть библиотека, размещенная на Nuget, и всякий раз, когда я развертываю новый пакет, я хочу увеличить версию пакета, но я не хочу обновлять информацию об Ассамблее в моем проекте или вручную обновлять версию В моем конвейере сборки каждый раз, когда я хочу развернуть. Я хочу автоматизировать это и гарантировать, что каждый раз, когда я развертываю новую версию моей библиотеки в Nuget, версия увеличивается на 1, и я хочу сделать все это внутри моего конвейера на Лазурные DevOps.

Для этого я буду создавать новую задачу сборки, которую я могу подключить к своему трубопроводу на Azure DevOps.

Создание задачи

В Предыдущий пост Я показал вам, как создать свои собственные задачи сборки. Я буду делать то же самое для этой задачи, но единственное исключение на этот раз — это то, что я буду использовать PowerShell, как прилагается к узлу. В частности, нет никаких причин использовать PowerShell, кроме того, что я в настоящее время нахожусь в ходе изучения ее. Использование PowerShell поставляется с одним недостатком, и это задача не является кроссплатформенным, как с вашими задачами узлов.

Поэтому, как только мы завершили первую часть создания наших собственных задач, я буду реализовать логику. Мы хотим получить текущую версию библиотеки на nuget.org и увеличить это значение, прежде чем мы опубликуем/опубликуем нашу библиотеку.

Довольно просто, верно?

Реализация

Для этой версии задачи нам потребуется три входа от пользователя. Нам нужно знать название пакета, с которым мы будем работать, это первое. Во -вторых, мы хотим увеличить номер версии патча, но мы также не хотим их бесконечно увеличивать. Для этого мы требуем, чтобы пользователь установил верхний предел, версия Patch может быть увеличена, прежде чем сбросить его до 0 и увеличить второстепенную версию. Мы вернемся к третьему необходимому входу позже.

После завершения нашей настройки мы можем продолжить и реализовать основную функциональность для этой задачи.

Мы будем использовать команду Find-Package, чтобы найти пакет на Nuget, или ваш собственный локально размещенный диспетчер пакетов. Прежде чем мы это сделаем, нам нужно добавить источник пакета Nuget. Команда Register-Packagesource должна быть вызвана до того, как мы выполним команду Find-Package, потому что она использует эти источники пакета для поиска вашего пакета. Как только у нас есть наш пакет и версия, мы можем продолжить и обновить его.

Как только у нас появится набор новой версии, нам нужно передать его следующей задаче в нашем трубопроводе, команде Nuget Pack.

Nuget Pack

При упаковке пакета Nuget требуется версия пакета. Nuget не позволяет вам публиковать одну и ту же версию пакета несколько раз. Это подводит нас к третьему требуемому вводу для нашей задачи. Как только у нас появится нашу новую версию, мы должны передать ее следующей задаче в нашем трубопроводе. У меня уже есть переменная, которую я использую в трубопроводе, чтобы установить новую версию пакета, поэтому я решил, почему бы не использовать ту же переменную. Чтобы это работало, я обновляю переменную своей среды из своей пользовательской задачи, используя команду vsts task.setVariable. Это обновляет переменную PackageVersion для вновь рассчитанной версии.

Выше представляет собой скриншот моего трубопровода для моей библиотеки. Перед стадией упаковки я сгенерирую следующую версию номер на основе текущей версии пакета на Nuget, обновите значение PackageVersion, которое затем будет использоваться в качестве версии на следующей стадии упаковки.

И там у нас есть это, каждый раз, когда мы хотим публиковать нашу библиотеку в Nuget, будет использоваться правильный номер версии.

Исходный код для этой задачи сборки можно найти в этот репозиторий Анкет Следите за новостями в этом репозитории, так как я буду добавлять больше задач в будущем.

Оригинал: «https://dev.to/raidzen10/package-versioning-on-azure-devops-1cgb»