Wir wollen jenkins unter Debian nicht global installieren. Wir erstellen uns dazu ein Unixuser jenkins
, welcher in der Gruppe devel
vorhanden sein soll. Der User jenkins
soll den jenkins Service konfigurieren und auch starten/stoppen können.
Unix User jenkins erstellen
Zuerst erstellen wir uns die Gruppe devel
.
root:~# groupadd devel
Da der User jenkins
in der Gruppe devel
sein soll, ermitteln wir mit folgenden Befehl die GID der Gruppe devel
.
root:~# gid=$(awk -F: '$0 ~ /^devel/ {print $3}' /etc/group)
Die GID der Gruppe devel
sollte nun in der Variable $gid
sein. Wenn das der Fall ist, wird auch der Befehl zum erstellen des Benutzers jenkins
ausgeführt.
root:~# [ -n "${gid}" ] && adduser -uid 10007 -gid ${gid} --quiet --disabled-password --gecos "jenkins" jenkins
Nun werden wir zum User jenkins
und erstellen die Grund Verzeichnisstruktur.
root:~# su - jenkins
jenkins@earth:~$ mkdir -p {bin,etc,usr,var,tmp}
Maven installieren
Maven laden wir einfach von apache.lehtivihrea.org herunter und entpacken es nach ~/usr/share
.
jenkins@earth:~$ cd usr/share
jenkins@earth:~/usr/share$ wget http://apache.lehtivihrea.org/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
jenkins@earth:~/usr/share$ tar xzvf apache-maven-3.0.5-bin.tar.gz
jenkins@earth:~/usr/share$ ln -s apache-maven-3.0.5 maven
jenkins@earth:~/usr/share$ rm apache-maven-3.0.5-bin.tar.gz
Jdk installieren
Das JDK laden wir uns von Oracle herunter, und kopieren es nach ~/tmp und installieren es nach ~/usr/share.
jenkins@earth:~/usr/share$ mv ../../tmp/jdk-6u41-linux-i586.bin .
jenkins@earth:~/usr/share$ bash ./jdk-6u41-linux-i586.bin
jenkins@earth:~/usr/share$ rm jdk-6u41-linux-i586.bin
jenkins@earth:~/usr/share$ ln -s jdk1.6.0_41 jdk6
Environment für Unixuser jenkins einrichten
Nun erstellen wir uns die Datei ~/.bash_environment
und setzen dort die JAVA_HOME
, MAVEN_HOME
Variablen und erweitern die PATH
Variable.
jenkins@earth:~/usr/share$ cd
jenkins@earth:~$ vi ~/.bash_environment
# ~/.bash_environment
# Set the JAVA_HOME avaible
JAVA_HOME="/home/jenkins/usr/share/jdk6"
MAVEN_HOME="/home/jenkins/usr/share/maven"
# Expant the path variable
PATH="${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}"
# Export all environment variables
export JAVA_HOME MAVEN_HOME PATH
Die soeben erstellte Datei ~/.bash_environment includieren wir in der Datei ~/.bashrc.
jenkins@earth:~$ vi ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# Load environment variables
[ -f ~/.bash_environment ] && . ~/.bash_environment
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
....
Jenkins installieren
Nun laden wir das Debian Paket jenkins_1.505_all.deb
herunter und entpacken das Archiv. Im Home Verzeichnis entpacken wir dann das Archiv data.tar.gz
.
jenkins@earth:~$ cd ~/tmp/
jenkins@earth:~/tmp$ wget http://pkg.jenkins-ci.org/debian/binary/jenkins_1.505_all.deb
jenkins@earth:~/tmp$ ar vx jenkins_1.505_all.deb
jenkins@earth:~/tmp$ cd
jenkins@earth:~$ cp ~/tmp/data.tar.gz .
jenkins@earth:~$ tar -xzvf data.tar.gz
jenkins@earth:~$ rm data.tar.gz
Das Start/Stop Skript für den User jenkins
erstellen wir wie folgt.
jenkins@earth:~$ vi ~/bin/jenkinsctl
#!/bin/bash
sudo /etc/init.d/jenkins "$@"
# EOF
Nun machen wir das erstellt Skript noch ausführbar.
jenkins@earth:~$ chmod 755 ~/bin/jenkinsctl
In der Datei ~/etc/default/jenkins
bearbeiten wir die Pfade. Die folgenden Variablen bekommen ein /home/jenkins
voran gesetzt. Den Port setzen wir auf 8888.
jenkins@earth:~$ vi ~/etc/default/jenkins
JAVA=/home/jenkins/bin/java
PIDFILE=/home/jenkins/var/run/jenkins/jenkins.pid
JENKINS_WAR=/home/jenkins/usr/share/jenkins/jenkins.war
JENKINS_HOME=/home/jenkins/var/lib/jenkins
JENKINS_LOG=/home/jenkins/var/log/jenkins/$NAME.log
JENKINS_ARGS="--webroot=/home/jenkins/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"
HTTP_PORT=8888
Ebenfalls in der Datei etc/logrotate.d/jenkins
setzen wir ein /home/jenkins
voran.
jenkins@earth:~$ vi ~/etc/logrotate.d/jenkins
/home/jenkins/var/log/jenkins/jenkins.log {
weekly
copytruncate
missingok
rotate 52
compress
delaycompress
notifempty
}
Im Start/Stop Skript erweitern wir nur die PATH Variable wie folgt:
jenkins@earth:~$ vi ~/etc/init.d/jenkins
....
PATH=/home/jenkins/bin:/bin:/usr/bin:/sbin:/usr/sbin
....
Nun werden wir wieder zu root
und setzen in /etc
Symlinks zu den soeben eingestellten Konfigurationsdateien.
jenkins@earth:~$ su -
root:~# cd /etc/default/
root:/etc/default# ln -s /home/jenkins/etc/default/jenkins
root:/etc/default# cd /etc/init.d
root:/etc/init.d# ln -s /home/jenkins/etc/init.d/jenkins
root:/etc/init.d# cd /etc/logrotate.d/
root:/etc/logrotate.d# ln -s /home/jenkins/etc/logrotate.d/jenkins
Damit der User jenkins
mit seinem Start/Stop Skript jenkinsctl
den Service starten & stoppen kann, tragen wir folgendes in der /etc/sudoers
ein.
root:/etc/logrotate.d# visudo
....
jenkins ALL=NOPASSWD: /etc/init.d/jenkins
Apache als Proxy einrichten
Wir erstellen eine VirtualHost Datei /etc/apache2/sites-available/jenkins
.
root:/etc/logrotate.d# vi /etc/apache2/sites-available/jenkins
<VirtualHost *:80>
ServerName jenkins.example.com
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
CustomLog /var/log/apache2/jenkins.example.com_acc.log combined
ErrorLog /var/log/apache2/jenkins.example.com_err.log
LogLevel error
</VirtualHost>
Nun aktivieren wir den VirtualHost jenkins und starten den Apache neu.
root:/etc/logrotate.d# a2ensite jenkins && apache2ctl configtest && apache2ctl graceful