Это приложение реализующее две вещи:
- Прокси для внешних репозиториев-регистров (docker/npm/composer/...);
- Хранилище внутренних артефактов. Например докер образов наших сервисов которые мы потом отгружаем в кубер.
Зачем нам нужен менеджер репозиториев?
1. Надежный доступ к артефактам
Мы не зависим от доступности packagist/npm registry/greensight dockerhub/gitlab и т д. Если что из этого упало или недоступно по сети — мы по-прежнему можем собирать и отгружать.
Образы и пакеты мы получаем из кэша менеджера если они были загружены ранее или явно помещены в него, а не из самих регистров.
2. Ускорение билдов и значительное уменьшение внешнего траффика
Если используем self-hosted решение, то менеджер репозиториев у нас в локальной сети относительно ci/cd, что выливается в эти два преимущества.
3. Удобства для разработчиков, связанные с доступами и скоростью установки зависимостей на локалках.
Например, чтобы подтянуть в сервис клиент другого сервиса разработчику больше не нужно в своём сервисе в composer.json указывать путь до репозитория с этим клиентом.
Также ему не нужен непосредственный доступ к этому репозиторию.
Всё что нужно - 1 раз настроить доступ к менеджеру репозиториев.
Также из менеджера репозиториев готовый пакет будет получатся значительно быстрее чем выкачиванием исходников из гитлаба.
4. Безопасность, например контроль за тем какие внешние зависимости установлены, контроль лицензий и уязвимостей.
Для себя мы выбрали Nexus. В результате выполнения фичи:
- Развернут Nexus в инфре Ensi;
- Настроены все сервисы Ensi и ci/cd на работу с ним.