Галерея Nuget с несколькими каналами
Недавно я установил Nuget Gallery ( https://github.com/NuGet/NuGetGallery) в качестве хранилища. В идеале я хотел бы создать несколько каналов, чтобы можно было различать пакеты nuget, которые будут повторно использоваться в других проектах (dll, контракты и т. Д.), От пакетов, которые мы используем для развертывания наших проектов в производственной среде.
Я знаю, что могу добиться этого, создав несколько экземпляров Nuget Gallery, но это кажется мне излишним, это означало бы, что два веб-сайта и две базы данных. Я также знаком с фактом, что MyGet предоставляет это функционально, но я не смогу получить одобрение на покупку. Я также знаю, что teamcity содержит свой собственный сервер каналов, но он не допускает такой сценарий с несколькими каналами, и его производительность не достаточно хороша для использования в больших масштабах.
В двух словах, идеальный сценарий развертывания был бы следующим:
- teamcity создает пакет развертывания или пакет dll / contract, в зависимости от сценария сборки.
- teamcity публикует пакеты развертывания в фиде развертывания галереи nuget (например, nugetgallery.server.com/deploy/ api / v2).
- teamcity публикует пакеты dll / contract в ленту разработчиков галереи nuget (скажем, nugetgallery.server.com/dev/ api / v2).
- осьминог всегда ищет пакеты в nugetgallery.server.com/deploy/ api / v2
- devs / teamcity ищет пакеты в nugetgallery.server.com/dev/ api / v2
Таким образом, я сохраняю все в чистоте и могу даже пойти до создания третьего типа фида, который содержит только пакеты релизов, так что я могу быть уверен, что ничего не будет развернуто в производство, если его не было в этом фиде.
Возможно, я пропустил какой-то фундаментальный подход, поэтому альтернативы этому, который я выбрал, приветствуются.
2 ответа
Вы можете попробовать Proget. С помощью этого сервера вы можете легко управлять несколькими каналами NuGet. он также предоставляет бесплатную версию, которая поддерживает все функции.
Поскольку я не смог найти ничего подходящего, я в конечном итоге сдался и пошел с решением для двух серверов. Я изо всех сил пытался найти какую-либо документацию о том, какие функциональные возможности действительно имеет галерея Nuget.
Прямо сейчас у нас есть что-то вроде deploy-nuget.server.com и dev-nuget.server.com, отдельные URL, экземпляры iis и экземпляры sql и местоположение папки.
Для кого-то, кто мог бы заняться этим в будущем, одно из решений, которое могло бы работать, - это создать частный репозиторий, основанный на пользователе, к сожалению, в моем случае этого было бы недостаточно, поскольку я также хотел бы, чтобы пакеты хранились в разных местах. чтобы мы могли применять различные политики резервного копирования в зависимости от типа пакета. Другим вариантом было бы на самом деле перейти на форк проекта, но из моего предыдущего опыта это никогда не заканчивается хорошо, так как скорее, чем позже, вы захотите обновить, и ваши пользовательские изменения придется как-то отсортировать.
Я понимаю, что это не идея галереи Nuget, так как вы не должны удалять пакеты. Но у нас есть некоторые ограничения по пространству, поэтому в конечном итоге мы удалим определенные пакеты развертывания, которые были созданы для сред QA, которые нам больше не нужны.