Administrera Git repos i Gerrit Code Review
Denna artikel beskriver hur man administrerar Git repos i Gerrit Code Review. Den är OS-neutral och bör även fungera för olika Linux distributioner. Det som skiljer alla olika system är hur man startar Gerrit tjänsten vid start. Det tar denna guide inte upp. Sök efter Gerrit paket för respektive system. Dessa brukar även innehålla startskript m.m. Denna guide tar inte heller upp själva granskningsprocessen i Gerrit. Utan vi kommer öppna upp för push m.m. direkt till master och andra brancher.
Gerrit kräver Java för att fungera.
Installera Gerrit
Skapa en användare på systemet som heter gerrit. Logga in som gerrit och ladda ner senaste Gerrit releasen (i detta exempel gerrit-full-2.5.war). Installera Gerrit under en katalog som vi döper till review_site:
Vi kommer nu få svara på en massa installationsfrågor. Vi kommer välja att använda en PostgreSQL databas och autentisera via LDAP. Vill du snabbt komma igång att testa Gerrit, välj då istället en H2 databas och "autentisering" via development_become_any_account.
Skapa först PostgreSQL användaren och databasen:
*** Gerrit Code Review 2.5 *** Create '/home/gerrit/review_site' [Y/n]? y *** Git Repositories *** Location of Git repositories [git]: *** SQL Database *** Database server type [H2/?]: postgresql Server hostname [localhost]: Server port [(POSTGRESQL default)]: Database name [reviewdb]: Database username [gerrit]: gerrit's password : confirm password : *** User Authentication *** Authentication method [OPENID/?]: ldap LDAP server [ldap://localhost]: LDAP username : cn=Manager,dc=example,dc=com cn=Manager,dc=example,dc=com's password : confirm password : Account BaseDN : ou=People,dc=example,dc=com Group BaseDN [ou=People,dc=example,dc=com]: ou=Group,dc=example,dc=com *** Email Delivery *** SMTP server hostname [localhost]: SMTP server port [(default)]: SMTP encryption [NONE/?]: SMTP username : *** Container Process *** Run as [gerrit]: Java runtime [/usr/local]: Copy gerrit.war to /home/gerrit/review_site/bin/gerrit.war [Y/n]? Copying gerrit.war to /home/gerrit/review_site/bin/gerrit.war *** SSH Daemon *** Listen on address [*]: Listen on port [29418]: Gerrit Code Review is not shipped with Bouncy Castle Crypto v144 If available, Gerrit can take advantage of features in the library, but will also function without it. Download and install it now [Y/n]? Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK Checksum bcprov-jdk16-144.jar OK Generating SSH host key ... rsa... dsa... done *** HTTP Daemon *** Behind reverse proxy [y/N]? Use SSL (https://) [y/N]? Listen on address [*]: Listen on port [8080]: *** Plugins *** Prompt to install core plugins [y/N]? Initialized /home/gerrit/review_site Executing /home/gerrit/review_site/bin/gerrit.sh start Starting Gerrit Code Review: OK Waiting for server to start ... OK Opening browser ...
Verifiera att Gerrit är uppe genom att t.ex. starta en webbrowser och gå till http://hostname:8080.
Kompletterande konfigurering
Om du har problem vid login samt att namnen inte visas korrekt, lägg till följande rader i gerrit.config:
[gerrit] canonicalWebUrl = http://example.com:8080/ [ldap] accountFullName = cn
Skapa användare och projekt i Gerrit
Starta en webbrowser och gå till http://hostname:8080. Klicka på Become uppe till höger. Klicka på New Account under Register. Ange namn och epost-adress och ett unikt användarnamn. Gerrit använder SSH och nyckelpar, så för att kunna klona och pusha över SSH måste du ladda upp din publika SSH-nyckel. Om du inte har ett nyckelpar kan du skapa ett via kommandot ssh-keygen -t rsa. Din publika nyckel hamnar i filen ~/.ssh/id_rsa.pub. Det är hela innehållet i denna fil som du ska ladda upp till Gerrit.
Det första kontot du skapar när man kör med development_become_any_account blir även administratör i Gerrit.
Skapa ett HelloWorld projekt i Gerrit genom att klicka på Projects => Create New Project. Ange sedan följande:
Klicka sen på Create Project. Om man vill skapa flera projekt med samma rättigheter, utnyttjar man med fördel Gerrits stöd att projekt kan baseras på andra projekt. För att få möjlighet att skapa brancher och pusha direkt till master branchen m.m. gå till All-Projects och Access. Klicka på Edit och ändra så du har följande:
Skapa projekt via kommandoraden
För att skapa ett projekt som heter linux, ärver rättigheter från ett projekt som heter private, har en tom initial commit och en beskrivning som är "Linux kernel configuration", kör kommandot:
Klona projekt och pusha ändring
Logga in som en användare som har ett konto i Gerrit och som har laddat upp sin publika nyckel. Klona sedan HelloWorld projektet:
Gå till repot och kör:
Pusha nu tillbaka ändringarna till Gerrit och master branchen:
Pusha en branch
Klona HelloWorld projektet och committa en ändring till en lokal branch som vi kallar test:
Gå till repot och kör:
Pusha nu ändringen och branchen till Gerrit:
Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 250 bytes, done. Total 2 (delta 0), reused 0 (delta 0) remote: Processing changes: refs: 1, done To ssh://user@host:29418/HelloWorld.git * [new branch] test -> test Branch test set up to track remote branch test from origin.
Tack vare Create Reference rättigheten på refs/* får vi pusha upp brancher till Gerrit.
Pusha en tag
Klona HelloWorld projektet:
Gå till repot och kör:
Total 0 (delta 0), reused 0 (delta 0) remote: Processing changes: refs: 1, done To ssh://peter@192.168.0.115:29418/HelloWorld.git * [new tag] v1 -> v1
Pusha en annotaterad tag
Taggen vi pushade i föregående kapitel, är en lättvikts tag. Den saknar information om vem och när man taggade. För att skapa en annoterad tag, kör kommandot:
Gerrit kommer nu vägra oss att pusha tagen till repot. Vi behöver lägga till följande rättighet:
När detta är gjort, kör om kommandot: