Что такое JFrog Artifactory?
JFrog Artifactory — это универсальный менеджер артефактов и DevOps платформа, которая поддерживает все популярные форматы пакетов и технологии. Artifactory является центральным hub для управления бинарными артефактами на всех этапах жизненного цикла разработки.
Основные возможности JFrog Artifactory
- Универсальность — поддержка 30+ форматов пакетов
- High Availability — кластерная архитектура для высокой доступности
- Security — сканирование уязвимостей и контроль доступа
- Metadata — богатые метаданные и свойства артефактов
- REST API — полнофункциональный API для автоматизации
- Build Integration — интеграция с CI/CD инструментами
Когда использовать JFrog Artifactory
JFrog Artifactory идеально подходит для:
- Крупных enterprise организаций с комплексными требованиями
- Управления артефактами в multi-cloud средах
- Обеспечения безопасности software supply chain
- Централизованного управления всеми типами пакетов
- Интеграции с JFrog Platform (Xray, Pipelines, Distribution)
Установка JFrog Artifactory
Установка через Docker Compose:
1version: '3.8'
2services:
3 artifactory:
4 image: docker.bintray.io/jfrog/artifactory-oss:latest
5 container_name: artifactory
6 ports:
7 - "8081:8081"
8 - "8082:8082"
9 volumes:
10 - artifactory-data:/var/opt/jfrog/artifactory
11 environment:
12 - JF_SHARED_DATABASE_TYPE=postgresql
13 - JF_SHARED_DATABASE_URL=jdbc:postgresql://postgres:5432/artifactory
14 - JF_SHARED_DATABASE_USERNAME=artifactory
15 - JF_SHARED_DATABASE_PASSWORD=password
16 depends_on:
17 - postgres
18 restart: unless-stopped
19
20 postgres:
21 image: postgres:13
22 container_name: postgres
23 environment:
24 - POSTGRES_DB=artifactory
25 - POSTGRES_USER=artifactory
26 - POSTGRES_PASSWORD=password
27 volumes:
28 - postgres-data:/var/lib/postgresql/data
29 restart: unless-stopped
30
31volumes:
32 artifactory-data:
33 postgres-data:
Настройка репозиториев
Создание репозиториев через REST API:
1# Создание Maven hosted репозитория
2curl -u admin:password \
3 -H "Content-Type: application/json" \
4 -d '{
5 "key": "maven-local",
6 "rclass": "local",
7 "packageType": "maven",
8 "description": "Local Maven repository"
9 }' \
10 "http://localhost:8081/artifactory/api/repositories/maven-local"
11
12# Создание Docker registry
13curl -u admin:password \
14 -H "Content-Type: application/json" \
15 -d '{
16 "key": "docker-local",
17 "rclass": "local",
18 "packageType": "docker",
19 "dockerApiVersion": "V2"
20 }' \
21 "http://localhost:8081/artifactory/api/repositories/docker-local"
Интеграция с Maven
Настройка settings.xml:
1<?xml version="1.0" encoding="UTF-8"?>
2<settings>
3 <servers>
4 <server>
5 <id>central</id>
6 <username>admin</username>
7 <password>password</password>
8 </server>
9 <server>
10 <id>snapshots</id>
11 <username>admin</username>
12 <password>password</password>
13 </server>
14 </servers>
15
16 <mirrors>
17 <mirror>
18 <id>central</id>
19 <name>libs-release</name>
20 <url>http://localhost:8081/artifactory/libs-release</url>
21 <mirrorOf>central</mirrorOf>
22 </mirror>
23 <mirror>
24 <id>snapshots</id>
25 <name>libs-snapshot</name>
26 <url>http://localhost:8081/artifactory/libs-snapshot</url>
27 <mirrorOf>snapshots</mirrorOf>
28 </mirror>
29 </mirrors>
30</settings>
Работа с Docker Registry
1# Логин в Artifactory Docker registry
2docker login artifactory.company.com:8082
3
4# Push образа
5docker tag nginx:latest artifactory.company.com:8082/docker-local/nginx:latest
6docker push artifactory.company.com:8082/docker-local/nginx:latest
7
8# Pull образа
9docker pull artifactory.company.com:8082/docker-local/nginx:latest
Build Info интеграция
Пример интеграции с Jenkins:
1pipeline {
2 agent any
3
4 tools {
5 maven 'Maven-3.8.1'
6 }
7
8 stages {
9 stage('Build') {
10 steps {
11 rtMavenDeployer(
12 id: "MAVEN_DEPLOYER",
13 serverId: "artifactory-server",
14 releaseRepo: "libs-release-local",
15 snapshotRepo: "libs-snapshot-local"
16 )
17
18 rtMavenResolver(
19 id: "MAVEN_RESOLVER",
20 serverId: "artifactory-server",
21 releaseRepo: "libs-release",
22 snapshotRepo: "libs-snapshot"
23 )
24
25 rtMavenRun(
26 tool: "Maven-3.8.1",
27 pom: 'pom.xml',
28 goals: 'clean install',
29 deployerId: "MAVEN_DEPLOYER",
30 resolverId: "MAVEN_RESOLVER"
31 )
32 }
33 }
34
35 stage('Publish Build Info') {
36 steps {
37 rtPublishBuildInfo(serverId: "artifactory-server")
38 }
39 }
40 }
41}
JFrog CLI использование
1# Установка JFrog CLI
2curl -fL https://getcli.jfrog.io | sh
3
4# Конфигурация сервера
5jfrog rt config --url=http://localhost:8081/artifactory --user=admin --password=password
6
7# Загрузка артефактов
8jfrog rt upload "target/*.jar" maven-local/com/example/my-app/1.0.0/
9
10# Скачивание артефактов
11jfrog rt download maven-local/com/example/my-app/1.0.0/*.jar
12
13# Поиск артефактов
14jfrog rt search maven-local/com/example/*/
Настройка безопасности
Создание пользователей и групп:
1# Создание группы
2curl -u admin:password \
3 -H "Content-Type: application/json" \
4 -d '{
5 "name": "developers",
6 "description": "Developers group",
7 "autoJoin": false
8 }' \
9 "http://localhost:8081/artifactory/api/security/groups/developers"
10
11# Создание пользователя
12curl -u admin:password \
13 -H "Content-Type: application/json" \
14 -d '{
15 "name": "developer1",
16 "email": "developer1@company.com",
17 "password": "password123",
18 "admin": false,
19 "groups": ["developers"]
20 }' \
21 "http://localhost:8081/artifactory/api/security/users/developer1"
Мониторинг и метрики
Artifactory предоставляет различные endpoints для мониторинга:
Репликация и федерация
Настройка репликации между инстансами:
1# Создание репликации
2curl -u admin:password \
3 -H "Content-Type: application/json" \
4 -d '{
5 "url": "http://target-artifactory:8081/artifactory/maven-local",
6 "username": "replication-user",
7 "password": "password",
8 "enabled": true,
9 "cronExp": "0 0 12 * * ?"
10 }' \
11 "http://localhost:8081/artifactory/api/replications/maven-local"
Best Practices
- Используй virtual репозитории для группировки related репозиториев
- Настраивай retention policies для управления дисковым пространством
- Включай Build Info для трассируемости артефактов
- Используй properties для маркировки и фильтрации артефактов
- Регулярно мониторь производительность и использование ресурсов
FAQ
Подходит ли JFrog Artifactory для продакшена?
Да, JFrog Artifactory является лидером в области управления артефактами и используется тысячами enterprise компаний по всему миру.
Какие требования к инфраструктуре?
Минимальные требования: 8 ГБ RAM, 4 CPU cores, 200 ГБ дискового пространства. Для production рекомендуется использовать внешнюю базу данных и кластерную архитектуру.
В чем разница между OSS и Pro версиями?
Pro версия включает High Availability, Smart Replications, REST API, Enterprise Support, интеграцию с JFrog Xray для security scanning.