Home / Linux / HowTo: Jenkins Installation unter Debian (Ubuntu, Mint) – Continous Integration + Apache Einbindung

HowTo: Jenkins Installation unter Debian (Ubuntu, Mint) – Continous Integration + Apache Einbindung

Jenkins ist eines der führenden Open-Source Projekte zum Thema Continuous Integration. Diese Anleitung zeigt die Installation auf einem Debian basierten Linux System (Debian, Ubuntu, Mint, …)

Mit Jenkins ist es möglich Software Buildprozesse zu automatisieren. Jeder Entwickler checkt seine Code Änderungen in ein zentrales  Versionsverwaltungssystem (GIT, SVN,…) ein und Jenkins triggert automatisiert zu bestimmten Zeiten, oder bei jeder Änderung im Repository einen Build Prozess. Dieser Prozess baut die Software und führt ggf. automatisierte Unit-Tests aus um die Funktionalität zu gewährleisten. Anschließend wird die Software in beliebiger Form zur Verfügung gestellt bzw. publiziert.

Fehler in der Softwareentwicklung werden somit verringert und Ergebnisse der Builds archiviert und per Mail versendet. Jenkins unterstützt dabei Build-Tools wie Ant, Maven oder Gradle und automatische Testtools wie JUnit oder Emma. Für weitere Integrationen werden unzählige Plugins frei zur Verfügung gestellt.

Ursprünglich wurde Jenkins als Projekt Hudson entwickelt. Der Hauptenwickler Kohsuke Kawaguchi war damals beim Unternehmen Sun beschäftigt, welches 2010 durch Oracle übernommen wurde. Nunja wie viele damalige Sun Open-Source Projekte wurde auch Hudson geforkt und unter dem Namen Jenkins von Oracle, wegen falscher  falsche Open-Source Politik ausgegliedert.

Jenkins Debian Repository hinzufügen:

Das Jenkins Projekt betreibt eigene Repositories für Debian, wodurch es ziemlich einfach ist Jenkins zu installieren und vor allem  upzudaten. Das Projekt ist wirklich sehr aktiv sodass monatlich mehrere Jenkins Updates zur Verfügung gestellt werden. (Bei Ubuntu oder Linux Mint wird ein sudo vor den Befehlen benötigt)

[plain]wget -q -O – http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add –
sh -c ‚echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'[/plain]

Debian Paketlisten updaten:

[bash]apt-get update[/bash]

Jenkins installieren:

[bash]apt-get install jenkins[/bash]

Jenkins installiert auomatisch die openjdk 6 Version von Java. Wer Java allerdings da Oracle 7 Java verwenden möchte kann dies folgendermaßen installieren: Java7 Installation unter Debian

Jenkins startet nach der Installation automatisch auf dem Port 8080. Die Weboberfläche ist somit im Browser via Hostname oder IP und Port 8080 erreichbar:

[bash]http://hostname.domain.local:8080[/bash]

Jenkins Start Bildschirm

Jenkins via AJP13 Connector in Apache integrieren (Port:80)

Damit der Jenkins Server über den standard HTTP Port 80 erreichbar ist kann er via mod_proxy oder mod_jk in den Apache integriert werden. Ich beschreibe hier die Variante mit mod_jk weil erfahrungsgemäß die Performance besser ist als mit mod_proxy

Apache2 installieren (falls noch nicht vorhanden):

[bash]apt-get install apache[/bash]

Jenkins Konfiguration bearbeiten dass der AJP Connector zur Verfügung gestellt wird. Der HTTP_Port kann weiterverwendet werden oder mit -1 deaktiviert werden. Ich verwende für AJP den Port 8009, ist aber jedem selbst überlassen.:

[bash]vi /etc/default/jenkins[/bash]

 

[bash]# port for HTTP connector (default 8080; disable with -1)
HTTP_PORT=-1
# port for AJP connector (disabled by default)
AJP_PORT=8009[/bash]

Konfiguration speichern und Jenkins Daemon neu starten:

[bash]/etc/init.d/jenkins restart[/bash]

Apache mod_jk installieren:

[bash]aptitude install libapache2-mod-jk[/bash]

Debian installiert dabei bereits die entsprechende Beispielkonfiguration mit, welche wir für unsere Zwecke editieren. Wenn die Tomcat Installation noch bei der Standardinstallation belassen wurde, müssen nur die ersten beiden Werte angepasst werden.

[bash]vi /etc/libapache2-mod-jk/workers.properties[/bash]

 

[bash]worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1[/bash]

In folgendem Schritt erstellen wir die Apache Modul Konfigurationsdatei für mod_jk mit folgenden Werten:

[bash]vi /etc/apache2/conf.d/mod-jk.conf[/bash]

 

[bash]JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
JkShmFile /var/log/apache2/jk-runtime-status[/bash]

Apache vHost (Virtual Host) erstellen

[sam id=“2″ codes=“true“]

Da nun die Grundkonfiguration des mod_jk abgeschlossen ist, legen wir nun einen vHost für eine Testdomain auf unseren Apache Webserver an (zB:. vhost.domain.com) und laden via JkMount den ajp13_worker nach /:

[bash]vi /etc/apache2/sites-available/jenkins[/bash]

 

[bash]<Virtualhost *:80>
JkMount /* ajp13_worker
ServerName jenkins.domain.local
ErrorLog /var/log/apache2/jenkins_error.log
CustomLog /var/log/apache2/jenkins_access.log combined
</Virtualhost>[/bash]

Nun wird der neue vHost aktiviert und der Apache Webserver neu gestartet:

[bash]a2ensite jenkins
/etc/init.d/apache2 restart[/bash]

Jenkins ist anschließend über den Port 80 per Browser aufrufbar:

jenkins-verwalten  jenkins-neuen-job-anlegen

3.8/5 - (17 votes)

Auch cool

Linux richtig anwenden: Tipps und Tricks für eine optimale Erfahrung

Die Kombination aus Spiele-Plattformen, und dem Betriebssystem Linux mag auf den ersten Blick ungewöhnlich erscheinen. …

Ein Kommentar

  1. Martin Frühauf

    Hallo,

    ich möchte Jenkins auf meinem Server installieren, jedoch will Jenkins trotz vorhandenem Oracle JDK 8u51 noch OpenJDK 6 mitinstallieren. (Hier ist die komplette Liste an zu installierenden Paketen: „ca-certificates-java daemon default-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm java-common jenkins libcups2 liblcms2-2 libnspr4 libnss3 libpcsclite1 openjdk-6-jre-headless openjdk-6-jre-lib tzdata-java“)

    Ich möchte erstens kein OpenJDK installieren und außerdem Java 8 behalten. Was kann ich nun tun?

    Freundliche Grüße
    Martin Frühauf