Можно ли создать кеш пакетов nuget для компьютеров без интернета? - PullRequest
0 голосов
/ 10 декабря 2018

У нас есть сервер сборки, который не имеет доступа к интернету.Он получает наш источник с git-сервера, а затем пытается их собрать.

В настоящее время происходит сбой (очевидно), поскольку у этого компьютера нет доступа к Интернету.Я обсудил это с ИТ-отделом, и они согласились позволить нам подключить его к Интернету, чтобы выполнить техническое обслуживание, но они отказываются постоянно подключать его.

Мой вопрос:

Это так?Можно создать какой-то локальный кеш Nuget, который мы можем заполнить при внесении изменений в пакеты, а затем сервер сборки попытается использовать этот кеш перед подключением к серверу?

1 Ответ

0 голосов
/ 10 декабря 2018

Я могу придумать несколько решений.

Загрузить пакеты, используемые решением

I недавно ответил на очень похожий вопрос , где человек, который спрашивал, хотел получить пакетыиспользовать на автономном компьютере.Сводка моего ответа на другой вопрос: вы создаете nuget.config, который устанавливает папку глобальных пакетов в папку, которая в настоящее время пуста, выполняете восстановление, а затем копируете все файлы .nupkg в место назначения.NuGet поддерживает локальные фиды папок, поэтому просто поместите эти nupkgs в общую сетевую папку и попросите сервер сборки использовать эту сетевую папку в качестве источника nuget.

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

Зеркально отразить пакеты nuget.org локально

У моих товарищей по команде есть инструмент, который будет использовать Каталог API NuGet v3 api найти все не удаленные пакеты (возможно, отфильтровав незарегистрированные пакеты) и загрузить все 1,4–1,8 миллиона пакетов локально.Их реализация занимает около недели, чтобы закончить загрузку всего.Для интереса я написал что-то, что использовало функции Azure для автоматического масштабирования задания и мне удалось загрузить все пакеты за 2 часа.Учетная запись хранилища больших двоичных объектов теперь составляет 2,4 ТиБ, так что вы почти наверняка не захотите делать это, если не будете анализировать пакеты на nuget.org, а не будете использовать ее в качестве источника для восстановления пакетов.Возможно, вы захотите периодически обновлять свой локальный канал.

Используйте сервер кэширования с возможностью чтения

Поскольку ваш сервер сборки подключен к сети, обратитесь в ИТ-отдел для получения сквозного кэширования.сервер.Если ваша компания уже использует HTTP-прокси, обратитесь в ИТ-отдел, чтобы разрешить вашему серверу сборки использовать его, а затем настройте его в качестве HTTP-прокси.

Если в вашей компании нет HTTP-прокси, естьнесколько серверов nuget , которые вы можете установить в своей компании.Некоторые из них поддерживают сквозное кэширование, поэтому ваш ИТ-отдел настроил его в DMZ компании, а ваш сервер сборки может использовать его для получения пакетов из канала в Интернете.

...