Как запустить Artifactory в качестве локального репозитория Gradle или Maven

Александр Ящук, Zoer, R5AM, Москва, 2019г.
На главную

Почти всегда в организациях существует проблема с доступом к репозиториям типа Jcenter или mavenCentral. Ситуация усугубляется тем, что удалённые репозитории раздают артефакты не сами, а через CDN, то есть появляются дополнительные проблемы на файрволлах. Идея воспользоваться чем-то типа Artifactory от Jfrog напрашивается сама собой - разворачиваем один локальный репозиторий в среде с доступом к внешним репозиториям, закачиваем в него требуемые нам артефакты, делаем экспорт артефактов и затем импортируем их в другой локальный репозиторий, который не имеет доступа к внешним репозиториям в Интернете.

  1. Скачать Artifactory OSS Docker образ:
    
        docker pull docker.bintray.io/jfrog/artifactory-oss:latest
        


  2. Проверить, что образ скачался:
    
        docker images | grep arti
        docker.bintray.io/jfrog/artifactory-oss      latest      58d49856785f      6 days ago      582MB
        


  3. Запустить Artifactory OSS :
    
        docker run --name artifactory -d -p 8081:8081 docker.bintray.io/jfrog/artifactory-oss:latest
        
    Для управления памятью можно передать переменную среды при запуске:
    
        docker run --name artifactory -d -p 8081:8081 -e EXTRA_JAVA_OPTIONS='-Xms512m -Xmx2g -Xss256k -XX:+UseG1GC' docker.bintray.io/jfrog/artifactory-oss:latest
        


  4. Зайти браузером на http://your_artifactory_host_name:8081 и сконфигурировать Artifactory единожды при первоначальном запуске с помощью визарда Onboarding Wizard .

    Jfrog Artifactory Onboarding Wizard

    Можно вместо визарда, например на дальней машине в консоли, воспользоваться конфигурационным YAML-файлом, но у меня не вышло, хотя все файлы в контейнерах присутствуют :-)


  5. Загрузить отдельные артефакты можно на вкладке Artifact (иконка с множеством страничек), откроется страница Artifact Repository Browser, в правом верхнем углу нажать кнопку Deploy со стрелкой вверх, и выбрать или перетащить файл, несколько файлов с артефактами.


  6. Для загрузки сразу всех артефактов, требуемых для сборки приложений, на закладке

    AdminRepositoriesRemote

    указать необходимые дальние репозитории, например:
    
        Repository Key              Type            URL                                     Recalculate Index           Replications
        ----------------------------------------------------------------------------------------------------------------------------
        jcenter                     maven           https://jcenter.bintray.com
        mavenCentral                maven           https://repo.maven.apache.org/maven2/
        


  7. Если проект собирается Gradle, то в файле build.gradle вместо всех дальних репозиториев указать свой новый локальный Artifactory:
    
        maven {
                url "http://127.0.0.1:8081/artifactory/gradle-dev"
            }
    
        
    Теперь при сборке проекта Артефектори подтянет из внешних репозиториев нужные для проекта артефакты и сохранит у себя.


  8. Для выгрузки артефактов из локального Артефактори можно воспользоваться консольной утилитой Jfrog CLI, скачать её в директорию, доступную по системной переменной PATH:
    
        curl -fL https://getcli.jfrog.io | sh
        


  9. Добавить конфигурацию Артефактори для работы с Jfrog CLI:
    
        jfrog rt c local-book-rt --url=http://127.0.0.1:8081/artifactory --user=admin
        


  10. Использовать один из ранее сконфигурированных Артефактори для всех последующих команд:
    
        jfrog rt use local-book-rt
        


  11. Выгрузить все артефакты в директорию gradle-dev-20190416_1233 из репозиторирия gradle-dev Артифактори:
    
        jfrog rt dl gradle-dev/ gradle-dev-20190416_1233/
        


  12. Перенести архив с выгруженной директорией артефактов на машину со вторым Артифактори, не имеющим доступа к внешним репозиториям, и импортировать все перенесённые артефакты, например в gradle-dev-local:
    
        jfrog rt u gradle-dev-20190416_1233/ gradle-dev-local
        
    Осталось указать в проектах новый локальный Артифактори вместо внешних в build.gradle, например:
    
        maven {
            url "http://127.0.0.1:8082/artifactory/gradle-dev/"
        }
        
    и собрать проекты.






На главную
К началу страницы