Nexus Repository Manager - miwanek/Omami GitHub Wiki
Wytwarzanie aplikacji potrafi być bardzo złożonym procesem, nad którym pracują liczne zespoły deweloperów. Projekt może wykorzystywać wiele plików źródłowych, bibliotek czy pluginów, często pochodzących ze źródeł zewnętrznych. W celu łatwiejszego zarządzania setkami plików są one zbierane w komponenty, tj. artefakty. Aby każdy z deweloperów miał dostęp do wykorzystywanych w projekcie artefaktów w odpowiedniej wersji, są one utrzymywane w specjalnym binarnym repozytorium (analogicznie jak system kontroli wersji przechowuje pliki źródłowe projektu i ich kolejne wersje). Dodatkowo repozytorium to pozwala na zarządzanie artefaktami, sprawdzanie ich licencji czy wyświetlanie informacji o ich bezpieczeństwie. Przykłady narzędzi dostarczających takich funkcjonalności to m.in. Inedo ProGet, Apache Archiva i Sonatype Nexus Repository Manager.
Nexus jako serwer proxy cachuje artefakty lokalnie na dysku, co pozwala na swobodną pracę deweloperów bez obaw, że przestaną mieć możliwość pobierania artefaktów z zewnątrz, bądź że wykorzystywane przez nich artefakty przestaną być dostępne w sieci.
Aby każdy członek teamu deweloperów wytwarzającego aplikację miał odpowiednie artefakty potrzebne do działania projektu należy skonfigurować Nexusa na odpowiednim serwerze, do którego team ma dostęp. W tym celu warto posiłkować się obszerną dokumentacją dostępną na stronie Sonatype Help.
Pobieramy i rozpakowujemy najnowszą wersję Nexusa (odpowiednią dla naszego systemu operacyjnego) poprzez oficjalną stronę Sonatype lub z poziomu CLI (wszystkie przykładowe komendy konfiguracji poniżej działają pod systemem Linux):
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
tar -xvzf nexus-latest-bundle.tar.gz
Tworzymy nowego użytkownika na potrzeby Nexusa (pamiętając by upewnić się, że będzie on mógł uruchomić usługę nexus
):
adduser nexus
W pliku bin/nexus.rc
przypisujemy stworzonego użytkownika:
run_as_user="nexus"
Następnie tworzymy dowiązanie symboliczne do skryptu startowego $installdir/bin/nexus
w folderze /etc/init.d/nexus
:
sudo ln -s /opt/nexus-<version>/bin/nexus /etc/init.d/nexus
Przechodzimy do folderu /etc/init.d
i uruchamiamy skrypt przy pomocy update-rc.d
(podobnym narzędziem, które można wykorzystać jest chkconfig
, jednak w przypadku Ubuntu nie jest ono dalej wspierane):
cd /etc/init.d
sudo update-rc.d nexus defaults
sudo service nexus start
Po uruchomieniu usługi możemy sprawdzić czy przebiegło ono pomyślnie:
tail -f /opt/sonatype-work/nexus3/log/nexus.log
Dostęp do Nexusa jest na porcie 8081
. Aby dostać się do interfejsu Nexusa i zarządzać artefaktami (będąc na maszynie uruchamiającej usługę) wchodzimy pod adres http://localhost:8081/
. Domyślne dane logowania to:
username: admin
password: admin123
Po konfiguracji i uruchomieniu Nexusa mamy dostępną listę domyślnych repozytoriów mavenowych (takich jak maven-central
czy maven-public
). Możemy dodać własne repozytorium, w tym celu wybieramy u góry ekranu Server configuration and administration
, a następnie zakładkę Repository -> Repositories
. Tam po wciśnięciu Create repository
wybieramy typ repozytorium, podajemy jego nazwę oraz dostosowujemy ustawienia.
Wysyłanie pliku do repozytorium można wykonać dwojako - poprzez interfejs Nexusa z poziomu przeglądarki oraz poprzez skrypt budujący nasz projekt (najpopularniejsze narzędzia budujące takie jak Gradle czy Maven wspierają poprzez różne pluginy publikowanie artefaktów do repozytorium). W tym celu należy zaaplikować dodatkowy plugin (na przykład Maven Plugin lub Maven Publish Plugin dostępne dla Gradle'a) oraz sprecyzować pliki do wysłania wraz z docelowym repozytorium. Dla przykładu dla plugina Maven Publish Plugin należy uzupełnić sekcję publishing
:
apply plugin: 'maven-publish'
publishing {
publications {
yourPublishName( MavenPublication ) {
artifact file("<path_to_your_file>")
}
}
repositories {
repositories {
maven {
url = 'http://www.example.com/repository'
credentials{
username "root"
password "root"
}
}
}
}
}