Styles

samedi 16 mars 2013

Linux : Jenkins en tant que service lancé au démarrage, stoppé à l'arrêt de la machine

Voici mon script de gestion d'un service Jenkins sous linux (debian) pour maitriser entièrement mon serveur d'intégration local.

Tout d'abord, j'ai créé un utilisateur cijenkins dans un groupe ciserver. Ensuite j'ai créé un répertoire /var/run/jenkins pour recevoir le fichier jenkins.pid contenant le pid du process de jenkins. Ce pid servira au script du service de savoir quel process terminer. Bien sûr, faites un petit chown cijenkins:ciserver /var/run/jenkins

Ensuite j'ai aussi créé le répertoire /var/log/jenkins qui recevra le fichier de log en cours jenkins.log. De même, faites un petit chown cijenkins:ciserver /var/log/jenkins J'ai ensuite créé le fichier /etc/init.d/jenkins (avec un petit chmod 755 dessus) :

#! /bin/sh
# /etc/init.d/jenkins
#

# Some things that run always
touch /var/lock/jenkins

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script jenkins "
    start-stop-daemon -b --start --oknodo --user cijenkins --group ciserver --pidfile /var/run/jenkins/jenkins.pid --chuid cijenkins:ciserver --make-pidfile --exec /bin/bash -- -c "exec /usr/bin/java -jar /opt/jenkins-1.505.war &>> /var/log/jenkins/jenkins.log"
    ;;
  stop)
    echo "Stopping script jenkins"
    start-stop-daemon --stop --oknodo --user cijenkins --group ciserver --name java --pidfile /var/run/jenkins/jenkins.pid --retry=TERM/30/KILL/5
    ;;
  *)
    echo "Usage: /etc/init.d/jenkins {start|stop}"
    exit 1
    ;;
esac

exit 0

Comme on le voit dans ce script on peut démarrer ou arrêter le service jenkins par l'option start ou stop. Le script permet d'écrire la sortie standard vers le fichier de log ainsi que de démarrer le service avec un utilisateur différent (ce script est lancé par root).

Si vous souhaitez lancer ce script au démarrage et à l'arrêt de votre PC il faut créer les liens dans le système d'initialisation de linux : update-rc.d jenkins defaults Plus de détail dans cet article.

Ensuite, vous pouvez vous amuser à configurer votre jenkins pour prendre en charge vos développements, notamment les développements python.