Технологии:
Proget - сервер управления пакетами Nuget
TFS - локальное обновление 2017 г. 1
Проблема: при повторном выпуске сборки из выпуска TFS для повторной упаковки пакета CI Nuget, который уже был добавлен в мой канал разработки Proget, похоже, нет способа получить автоматический Семантическое управление версиями. Диалоговое окно справки, которое появляется в отношении установки версии в настройке Nuget Packager, выглядит следующим образом.
Использовать дату и время Если вы выберете «Использовать дату и время», будет создана версия, совместимая с SemVer, в формате X.Y.Z-ci-datetime, где вы выбираете X, Y и Z.
Использовать переменную среды Если вы выбрали «Использовать переменную среды», вы должны выбрать переменную среды и убедиться, что она содержит номер версии, которую вы хотите использовать.
Использовать номер сборки. Если вы выберете «Использовать номер сборки», номер сборки будет использоваться для версии, которую вы упаковываете. Примечание. В разделе «Общие» установите формат сборки '$ (BuildDefinitionName) _ $ (Год: гггг). $ (Месяц). $ (DayOfMonth) $ (Rev: .r)
Я хотел бы иметь возможность перевыпустить пакет Nuget, который перешел из моей сборки CI в TFS в мой канал разработки Proget, в мой рабочий канал Proget. У Microsoft есть отличная статья о управлении версиями Пакеты NuGet в мире непрерывной доставки. В этой статье они уклоняются от того факта, что они делают нечто подобное, но не дают никаких реальных указаний относительно того, как это было достигнуто.
Вопрос:
Как бы вы настроили упаковщик Nuget, чтобы при создании пакета вы вводили переменную сборки? Или есть способ, которым вы могли бы установить основную версию и каждый раз просто получать второстепенное приращение? Как другие справляются с продвижением пакетов от разработки к производству?
Пробовали следующее:
Пробовал $ (Version) в качестве переменной сборки и выпуска, но, похоже, не работает. Пакет помечается датой. Кроме того, это кажется действительно функциональным только в части сборки TFS, где модальное окно содержит место для изменения этого значения.
Пробовал использовать метод даты и времени, и он вставляет CI в номер сборки. Это почти именно то, что нам нужно, за вычетом определения CI. Поскольку он автоматически вставляет CI, это не подходит для производства.
Выключил его, и он извлекает версию из Nuspec, но тогда это будет предполагать, что в вашей сборке CI вы всегда увеличиваете номер версии на один больше, чем текущий, после того, как вы нажали свою последнюю версию выпуска. Это связано с тем, что nuspec находится в файлах сборки, которые вы повторно выпускаете через цепочку выпусков TFS. Непонятно, мягко говоря.
Используйте номер сборки, равный $ (BuildDefinitionName) $ (Year: yyyy). $ (Month). $ (DayOfMonth) $ (Rev: .r) Я бы хотел здесь $ (Major). $ ( Незначительный). $ (Патч). Попытка $ (Version) $ с версией 1.0.0 дает вам файл с именем, имеющим на выходе 2017.11.3.1, по-видимому, игнорируя переменную $ (Version).