Ответ
Nexus Repository Manager 3 выступает в роли единого источника истины для всех бинарных артефактов в нашем CI/CD-контуре.
Архитектура и настройка:
- Типы репозиториев:
- Proxy-репозитории: Для кэширования внешних зависимостей (Maven Central, Docker Hub, npmjs). Это ускоряет сборки и обеспечивает работу при отсутствии интернета.
- Hosted-репозитории: Для хранения внутренних артефактов:
maven-releases,maven-snapshots,docker-private,npm-private. - Group-репозитории: Объединяют proxy и hosted репозитории в один URL, упрощая конфигурацию клиентских инструментов.
- Управление доступом: Интеграция с корпоративным LDAP/AD. Права доступа (чтение/запись/администрирование) назначаются через роли и привилегии.
- Интеграция в CI/CD:
- Maven/Gradle: Настройка через
settings.xmlилиgradle.propertiesдля публикации артефактов и разрешения зависимостей из group-репозитория. - Docker: Настройка insecure-registry или добавление сертификата Nexus. CI-пайплайн аутентифицируется и пушит образы в hosted-репозиторий.
- NPM: Настройка
.npmrcс аутентификационным токеном.
- Maven/Gradle: Настройка через
Пример фрагмента settings.xml для Maven:
<servers>
<server>
<id>nexus-releases</id>
<username>${env.NEXUS_USER}</username>
<password>${env.NEXUS_PASS}</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-group</id>
<mirrorOf>*</mirrorOf>
<url>https://nexus.company.com/repository/maven-group/</url>
</mirror>
</mirrors>
Операционные задачи:
- Очистка: Настроены scheduled tasks для удаления старых snapshots и неподписанных артефактов.
- Высокая доступность: Nexus развернут в кластере Kubernetes с StatefulSet и сетевым хранилищем (например, NFS или облачным диском) для тома
sonatype-work. - Резервное копирование: Регулярный бэкап базы данных (встроенной или внешней PostgreSQL) и директории с артефактами.