Что такое Nexus Repository?
Nexus Repository — это универсальный менеджер репозиториев от Sonatype, который поддерживает множество форматов артефактов включая Maven, NPM, Docker, PyPI, NuGet и многие другие. Nexus обеспечивает централизованное управление зависимостями и артефактами сборки.
Основные возможности Nexus Repository
- Множественные форматы — поддержка 30+ форматов репозиториев
- Proxy репозитории — кеширование внешних зависимостей
- Hosted репозитории — хранение собственных артефактов
- Group репозитории — объединение нескольких репозиториев
- Security — сканирование уязвимостей и управление доступом
- REST API — программное управление и интеграция
Когда использовать Nexus Repository
Nexus Repository идеально подходит для:
- Централизованного управления зависимостями в enterprise среде
- Кеширования внешних репозиториев для ускорения сборок
- Хранения приватных артефактов и библиотек
- Обеспечения безопасности supply chain
- Интеграции с CI/CD пайплайнами
Установка Nexus Repository
Установка через Docker:
Docker Compose конфигурация:
Настройка Maven репозитория
Конфигурация settings.xml для Maven:
1<?xml version="1.0" encoding="UTF-8"?>
2<settings>
3 <mirrors>
4 <mirror>
5 <id>nexus</id>
6 <mirrorOf>*</mirrorOf>
7 <url>http://localhost:8081/repository/maven-public/</url>
8 </mirror>
9 </mirrors>
10
11 <servers>
12 <server>
13 <id>nexus-snapshots</id>
14 <username>admin</username>
15 <password>admin123</password>
16 </server>
17 <server>
18 <id>nexus-releases</id>
19 <username>admin</username>
20 <password>admin123</password>
21 </server>
22 </servers>
23</settings>
Настройка в pom.xml:
1<distributionManagement>
2 <repository>
3 <id>nexus-releases</id>
4 <url>http://localhost:8081/repository/maven-releases/</url>
5 </repository>
6 <snapshotRepository>
7 <id>nexus-snapshots</id>
8 <url>http://localhost:8081/repository/maven-snapshots/</url>
9 </snapshotRepository>
10</distributionManagement>
Настройка NPM репозитория
Настройка Docker Registry
Работа с REST API
Примеры использования REST API:
1# Получение списка репозиториев
2curl -u admin:admin123 \
3 "http://localhost:8081/service/rest/v1/repositories"
4
5# Поиск компонентов
6curl -u admin:admin123 \
7 "http://localhost:8081/service/rest/v1/search?repository=maven-central&name=junit"
8
9# Загрузка артефакта
10curl -u admin:admin123 \
11 -F "maven2.groupId=com.example" \
12 -F "maven2.artifactId=my-app" \
13 -F "maven2.version=1.0.0" \
14 -F "maven2.asset1=@target/my-app-1.0.0.jar" \
15 -F "maven2.asset1.extension=jar" \
16 "http://localhost:8081/service/rest/v1/components?repository=maven-releases"
Настройка безопасности
Создание пользователей и ролей через API:
1# Создание роли
2curl -u admin:admin123 \
3 -H "Content-Type: application/json" \
4 -d '{
5 "id": "developer",
6 "name": "Developer",
7 "description": "Developer role",
8 "privileges": ["nx-repository-view-*-*-read", "nx-repository-view-*-*-add"]
9 }' \
10 "http://localhost:8081/service/rest/v1/security/roles"
11
12# Создание пользователя
13curl -u admin:admin123 \
14 -H "Content-Type: application/json" \
15 -d '{
16 "userId": "developer1",
17 "firstName": "John",
18 "lastName": "Doe",
19 "emailAddress": "john.doe@example.com",
20 "password": "password123",
21 "status": "active",
22 "roles": ["developer"]
23 }' \
24 "http://localhost:8081/service/rest/v1/security/users"
Интеграция с CI/CD
Пример Jenkins pipeline:
Мониторинг и метрики
Nexus предоставляет JMX метрики и health check endpoints:
Best Practices
- Используй proxy репозитории для кеширования внешних зависимостей
- Настраивай cleanup policies для управления дисковым пространством
- Регулярно создавай резервные копии blob store
- Мониторь использование ресурсов и производительность
- Используй LDAP/AD интеграцию для управления пользователями
FAQ
Подходит ли Nexus Repository для продакшена?
Да, Nexus Repository широко используется в корпоративных средах и поддерживает миллионы разработчиков по всему миру.
Какие требования к инфраструктуре?
Минимальные требования: 4 ГБ RAM, 2 CPU cores, 100 ГБ дискового пространства. Для production рекомендуется больше ресурсов в зависимости от нагрузки.
В чем разница между OSS и Pro версиями?
Pro версия включает дополнительные функции: сканирование уязвимостей, staging репозитории, расширенные метрики, поддержку высокой доступности.