Jenkins och Gerrit under Tomcat 8 i Debian Wheezy

From Peters wiki
Revision as of 05:55, 27 August 2014 by Peter (talk | contribs)
Jump to navigation Jump to search

Denna artikel beskriver hur man kör Jenkins & Gerrit under Tomcat 8 i Debian Wheezy. Artikeln går bara igenom hur man installerar Tomcat 8 och hur man installerar Jenkins & Gerrit, inte hur man sedan konfiguerar dessa applikationer.

Tomcat 8 för Debian Wheezy hämtar man från wheezy-backports. Tomcat 8 kräver Java 7 eller senare.

Installera Tomcat 8

Installera tomcat8, tomcat8-admin och tomcat8-docs:

root # apt-get install -t wheezy-backports tomcat8 tomcat8-admin tomcat8-docs

Verifiera att Tomcat 8 har startats genom att browse:a till sidan: http://localhost:8080.

Addera en admin användare

För att kunna komma åt via Tomcat sidor behöver man tillhöra rollen manager-gui eller admin-gui. Skapa därför en admin användare genom att lägga till följande i filen /etc/tomcat8/tomcat-users.xml:

<tomcat-users>
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="<username>" password="<password>" roles="manager-gui,admin-gui"/>
</tomcat-users>

Ange valfritt användarnamn och lösenord. Testa att du nu kommer åt admin sidan i Tomcat.

Förbereda Tomcat för Gerrit

Sätt upp JDBC (Java databasanslutning) för Gerrit

PostgreSQL

Ladda ner JDBC för PostgreSQL här. Till PostgreSQL-9.1 och Java 7 verkar version 9.3 för JDBC41 fungera bra. Spara JAR filen i katalogen /usr/share/tomcat8/lib.

Konfiguera sedan kopplingen till PostgreSQL-databasen genom att lägga till följande i filen /etc/tomcat8/context.xml:

<Context>
    <Resource
        name="jdbc/ReviewDb"
	auth="Container"
	type="javax.sql.DataSource"
	username="<username>"
	password="<password>"
	driverClassName="org.postgresql.Driver"
	url="jdbc:postgresql://localhost:5432/<database>"
    />
</Context>

Ange namnet på databasen, namnet på databasanvändaren och dess lösenord.

MySQL/MariaDB

Ladda ner JDBC för MySQL här. Packa upp och spara JAR filen i katalogen /usr/share/tomcat8/lib. Konfiguera sedan kopplingen till MySQL-databasen genom att lägga till följande i filen /etc/tomcat8/context.xml:

<Context>
    <Resource
        name="jdbc/ReviewDb"
	auth="Container"
	type="javax.sql.DataSource"
	username="<username>"
	password="<password>"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://localhost:3306/<database>"
    />
</Context>

Ange namnet på databasen, namnet på databasanvändaren och dess lösenord.

H2

h2 JDBC stödet kan vi extrahera ur gerrit.war filen. För att veta vad filen heter, kör:

user $ jar -tf gerrit.war
user $
grep lib/h2

Sen kan man extrahera h2 filen och spara den under /usr/share/tomcat8/lib via kommandot:

root # java -jar gerrit.war cat lib/h2-1.3.174.jar > /usr/share/tomcat8/lib/h2-1.3.174.jar

Konfiguera sedan kopplingen till H2-databasen genom att lägga till följande i filen /etc/tomcat8/context.xml:

<Context>
    <Resource
        name="jdbc/ReviewDb"
        type="javax.sql.DataSource"
        username=""
        password=""
        driverClassName="org.h2.Driver"
        url="jdbc:h2:file:/var/lib/gerrit/review_site/db/ReviewDB"
        maxActive="100"
        maxIdle="20"
    />
</Context>

Justera sökvägen till databasen om den inte läggs i katalogen /var/lib/gerrit/review_site/db.

Kryptering

Då Gerrit kör all kommunikation över SSH krävs kryptostöd. Ladda ner Provider samt PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL från http://www.bouncycastle.org/latest_releases.html. Välj versionen som passar Java 7. I skrivande stund är det dessa filer man ska ladda ner: http://www.bouncycastle.org/download/bcprov-jdk15on-151.jar och http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar. Spara filerna i katalogen /usr/share/tomcat8/lib.

Inställning av Jenkins och Gerrit hemkatalog

För att välja var Jenkins och Gerrit filerna sparas, sätt variablerna JENKINS_HOME och GERRIT_SITE. Om vi vill ha Jenkins under /var/lib/jenkins och Gerrit under /var/lib/gerrit/review_site, lägg till följande i /etc/default/tomcat8:

CATALINA_OPTS="-DJENKINS_HOME=/var/lib/jenkins -DGERRIT_SITE=/var/lib/gerrit/review_site"

Då alla inställningar i Tomcat är klara, starta om Tomcat servern:

root # service tomcat8 restart

Installera Gerrit

Ladda ner Gerrit. Döp om filen till gerrit.war, men lägg den ännu inte under /var/lib/tomcat8/webapps. Vi behöver initiera Gerrit först. Kör kommandona:

root # mkdir -p /var/lib/gerrit/review_site
root # chmod -R 755 /var/lib/gerrit
root # java -jar gerrit.war init -d /var/lib/gerrit/review_site

Ställ in Gerrit som vanligt, men man kan nog mata in vilken URL listen port som helst. Canonical URL ställer du in till http://<webadress>:8080/gerrit. Användaren för container processen ska sättas till tomcat8, dvs den användare som kör Tomcat servern. När Gerrit är initierat, kan vi deploy:a Gerrit genom att kopiera eller flytta gerrit.war filen till katalogen /var/lib/tomcat8/webapps. Efter en kort stund kommer applikationen auto-deploy:as och katalogen /var/lib/tomcat8/webapps/gerrit kommer skapas. Kolla på Tomcat admin sidan om applikationen startat ordentligt. Om inte, försök felsöka genom att titta i loggarna under /var/log/tomcat8. Om allt verkar ok, försök logga in i Gerrit: http://localhost:8080/gerrit/

Då Gerrit kommer köras som samma användare som kör Tomcat, se till att review_site mappen har tomcat8 som ägare och grupp:

root # chown -R tomcat8:tomcat8 /var/lib/gerrit

Installera Jenkins

Jenkins kräver ingen initiering som Gerrit. Det räcker att skapa hemkatalogen och se till att den har tomcat8 som ägare och grupp:

root # mkdir /var/lib/jenkins
root # chown tomcat8:tomcat8 /var/lib/jenkins
root # chmod 755 /var/lib/jenkins

Ladda ner Jenkins .war filen, döp om den till jenkins.war och flytta den till katalogen /var/lib/tomcat8/webapps. Efter en kort stund kommer applikationen auto-deploy:as och katalogen /var/lib/tomcat8/webapps/jenkins kommer skapas. Kolla på Tomcat admin sidan om applikationen startat ordentligt. Om inte, försök felsöka genom att titta i loggarna under /var/log/tomcat8. Om allt verkar ok, försök öppna Jenkins: http://localhost:8080/jenkins/