Самостоятельное размещение NuGet

Я смотрел на самостоятельный хостинг NuGet, мне было трудно понять, как его настроить и как он поможет поддержать наш процесс разработки.

Есть ли у кого-нибудь рекомендации, что использовать, как настроить?

Или я должен просто использовать размещенный сервис?


person Jason Watts    schedule 11.09.2012    source источник


Ответы (4)


Изучив различные решения — автономный и размещенный сервис — мы выбрали ProGet.

Резюме ProGet

ProGet имеет стандартную «бесплатную» лицензию и номинальные лицензионные сборы (на один год и бессрочно) для корпоративной версии. В настоящее время мы используем стандартную «бесплатную» версию и не имеем никаких реальных жалоб. Вы можете создавать столько фидов, сколько хотите, добавлять столько пользователей, сколько хотите, и т. д. (Мы создали фиды «Тестирование», «Промежуточный» и «Производственный», чтобы они были частью нашего процесса обеспечения качества.) Единственное реальное ограничение в бесплатной версии невозможно фильтровать внешние каналы для определенных пакетов, которые вы хотите включить в свои каналы ProGet. Эта функция фильтрации управляется с помощью «коннекторов». В корпоративной версии при создании фида вы можете дополнительно добавить «коннектор» для получения пакетов из других фидов (внешних или внутренних).

ProGet с управлением и созданием пакетов Nuget

Шаги по созданию самого пакета nuget я оставлю для популярного сообщения в блоге Дэвида Эббо, http://blog.davidebbo.com/2011/04/easy-way-to-publish-nuget-packages-with.html. Однако помните, что загружать пакеты можно через веб-интерфейс администрирования пакетов ProGet, командную строку nuget.exe. или Проводник пакетов Nuget.

Установка, настройка и активация ProGet

Установка, настройка и активация ProGet была наименее интуитивно понятной частью. Он может быть установлен с использованием обычной базы данных SQL Server или базы данных SQL Server Express. Кроме того, это также может быть самостоятельным приложением или работать под IIS. Если вам нужно выполнить автономную активацию или вы хотите запросить другие лицензионные ключи, перейдите на my.inedo.com и создайте учетную запись, и вы сможете делать все оттуда.

Контроль качества проекта и CI

CI с TeamCity — это то, что нам понадобится, поэтому мы рассматриваем возможность создания процесса сборки пакета nuget с использованием сервера TeamCity Nuget. Есть инструкция по созданию пакетов, которую я опубликую в комментарии. Следующим шагом будет автоматическая публикация пакетов nuget, созданных TeamCity, в соответствующих фидах ProGet (т. е. «Тестирование», «Промежуточная подготовка», «Производство»), возможно, с использованием командной строки Nuget с ключом API.

Дополнительная информация

Мы смотрели на MyGet как на размещенную службу, но, похоже, она спотыкалась на простых сценариях, таких как добавление другого участника/пользователя. Это также немного подскочило в цене, когда потребовалось более двух учетных записей участников. В то время как с ProGet вы получаете неограниченное количество учетных записей пользователей только с бесплатной версией.

Еще одно замечание: для публикации проектов/пакетов типа OSS я бы рассмотрел в качестве решения Chocolatey.

person TWright    schedule 11.09.2012
comment
Вот ссылка на руководство, как и было обещано: jamesheppinstall.wordpress.com/2012/05/25/ - person TWright; 11.09.2012
comment
Как правило, наш процесс установки/активации очень прост. Единственный раз, когда вам нужно выйти за пределы инструмента для активации, это если сервер ProGet не подключен к Интернету, обычно активация происходит автоматически. Я также добавлю, что версия Enterprise также добавляет возможность использовать LDAP для доступа к фиду вместо того, чтобы вручную запоминать или вводить ключ API (если, конечно, он не указан явно для фида). - person Tod Hoven; 12.09.2012
comment
Тод сообщил мне о проблеме со ссылкой, и теперь они снова работают. - person John Rasch; 13.09.2012
comment
Спасибо Тоду и Джону. До сих пор мы действительно ценили гибкость инструмента. Очень обнадеживает то, что вы, ребята, так чутко реагируете на потребности пользователей/клиентов. Мы рассматриваем возможность приобретения корпоративной лицензии в ближайшем будущем. - person TWright; 13.09.2012
comment
Я тоже пробовал ProGet, но он был очень ненадежен и у нас было куча проблем с ним; случайный запрет доступа, забывание пакетов, отображение пакетов в VS занимает целую вечность. - person Wilbert; 09.01.2014
comment
@Wilbert - почти год спустя любая из тех проблем, которые были связаны с ProGet, должна была быть решена сейчас, поскольку способ хранения пакетов полностью изменился. Раньше пакеты контролировались с помощью FileWatcher, а теперь используется наша собственная служба мониторинга, которая намного надежнее, особенно с пакетами, хранящимися на сетевых дисках. Кроме того, вся локальная индексация пакетов теперь выполняется в базе данных SQL, и у нас есть несколько пользователей с более чем 10 000 пакетов, которые не замечают медленного отображения или времени загрузки. - person John Rasch; 05.02.2015
comment
@JohnRasch Да, теперь мы счастливые клиенты Inedo :) - person Wilbert; 09.02.2015

Другим вариантом самостоятельного размещения является использование пакета NuGet.Server и создание веб-сайта IIS для его размещения во внутренней сети, хотя он не очень хорошо масштабируется, если вы планируете опубликовать более нескольких пакетов.

Я создал ответвление NuGet.Server, которое использует индекс Lucene.Net для устранения этих проблем с производительностью. Загрузки доступны по адресу https://github.com/themotleyfool/Klondike/releases.

person Chris Eldredge    schedule 11.09.2012
comment
Сколько пакетов, прежде чем он перестанет масштабироваться? С какой версией вы последний раз тестировали? Были ли ваши разветвленные изменения объединены обратно в официальное дерево исходного кода? - person Shaun Wilson; 19.12.2013
comment
@ShaunWilson Вероятно, в последний раз я тестировал NuGet.Server 2.0, но, глядя на код, он не сильно изменился. Основная проблема масштабирования заключается в том, что хэши пакетов кэшируются в процессе, поэтому, когда приложение перезапускает каждый пакет в файловой системе, необходимо полностью прочитать его для пересчета хэша. Операции поиска и списка также выполняются медленно по тем же причинам. - person Chris Eldredge; 20.12.2013
comment
@ShaunWilson При тестировании я обнаружил, что NuGet.Server практически непригоден для примерно 100 пакетов среднего размера. Моя вилка не была объединена обратно вверх по течению, потому что в ней слишком много изменений. Теперь это отдельный проект под названием Klondike, доступный по адресу github.com/themotleyfool/Klondike. - person Chris Eldredge; 20.12.2013

Чтобы поддерживать этот поток в актуальном состоянии, Visual Studio Team Services также имеет диспетчер пакетов в предварительной версии. См. Marketplace: Управление пакетами

person Luuk    schedule 06.01.2016

Вы можете создать пустое веб-приложение Asp.Net и установить Nuget.Server из галереи Nuget. Это бесплатный вариант самостоятельного размещения собственных пакетов Nuget в IIS. Ознакомьтесь с документацией.

person Frank Odoom    schedule 15.06.2017