Czy zastanawialiście się kiedyś, jak można zarządzać własnym repozytorium gita. Nie chodzi mi o repozytorium gita w chmurze jak GitHub czy Bitbucket, tylko o takie repozytorium gita trzymanym w swojej własnej infrastrukturze. Jak zarządzać dostępnością do projektów w repozytorium git trzymanym na własnym serwerze. Jedną z odpowiedzi na to pytanie jest – gerrit.
Gerrit jest darmowym narzędziem służącym do przeglądania wprowadzonych zmian do repozytorium gita przez zespół programistów. Zapewnia także kontrole nad uprawnieniami do poszczególnych zasobów w repozytorium. Gerrit został stworzony przez Google na potrzeby rozwoju projektu Android. Obecnie wykorzystywany jest w wielu projektach Google i nie tylko.
Instalacja.
Do celów prezentacji użyłem serwerowej wersji Ubuntu 16.04.2 LTS xenial.
Krok 1 -Git
Gerrit jest nakładką na gita, w pierwszym kroku upewnijmy się, że git jest już zainstalowany na serwerze.
git version
Jeżeli nie mamy zainstalowanego gita to instalujemy poniższym poleceniem.
sudo apt-get update sudo apt-get install git
Krok 2 – Java
Gerrit napisany jest w javie i wymaga, by java była zainstalowana na serwerze. Sprawdzamy czy mamy zainstalowaną jave.
java -version
Jeśli nie mamy zainstalowanej javy wpisujemy komendę.
sudo apt-get install default-jdk
Krok 3 – Gerrit
Na stronie https://www.gerritcodereview.com z sekcji Download pobieramy najnowszą wersje gerrita, w moim przypadku jest to wersja 2.13.6.
wget https://gerrit-releases.storage.googleapis.com/gerrit-2.13.6.war
Instalujemy gerrita.
java -jar gerrit-2.13.6.war init --batch -d ~/gerrit-2.13.6
Sprawdzamy pod jakim adresem został zainstalowany gerrit.
git config -f ~/gerrit-2.13.6/etc/gerrit.config gerrit.canonicalWebUrl
Zajrzyjmy do pliku konfiguracyjnego gerrita.
nano ~/gerrit-2.13.6/etc/gerrit.config
[gerrit]
basePath = git
serverId = 0cfd11ad-9872-48fc-89d0-1e4493845e5f
canonicalWebUrl = http://ubuntu:8080/
[database]
type = h2
database = /home/ubuntu/gerrit-2.13.6/db/ReviewDB
[auth]
type = OPENID
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[container]
user = ubuntu
javaHome = /usr/lib/jvm/java-8-openjdk-i386/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache
W sekcji [gerrit] możemy ustawić pod jaką nazwą i na jakim porcie będzie widoczna nasza usługa gerrita.
W sekcji [database] definiujemy z jakiej bazy danych gerrit będzie korzystać, domyślnie jest ustawiana h2. Dostępne możliwości: PostgreSQL, MySQL, Oracle, SAP MaxDB, DB2, SAP HANA.
W sekcji [auth] ustawiamy mechanizm logowania do gerrita. Dostępne możliwości: HTTP, LDAP.
W sekcji [sendemail] definiujemy serwer pocztowy do wysyłania maili z gerrita.
Pozostałe sekcje są mniej ciekawe, jak będzie kiedyś potrzeba to je opisze.
Po wprowadzeniu zmian w pliku konfiguracyjnym należy zrestartować gerrita.
~/gerrit-2.13.6/bin/gerrit.sh restart
Gotowe, w przeglądarce wpisujemy adres, pod którym kryje się gerrit w moim przypadku jest to http://ubuntu:8080/.
Pamiętajmy, że z pierwszym logowaniem gerrit tworzy konto z uprawnieniami administratora!
Metody uwierzytelnia wraz z przykładami konfiguracji opisano tutaj.