Jenkins : Mise en place d'un outil d'intégration continue

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Jenkins

Software version 1.447
Operating System Debian 7
Website Jenkins
Last Update 12/04/2013
Others

1 Introduction

Jenkins est un outil open source d'intégration continue, fork de l'outil Hudson après les différends entre son auteur, Kohsuke Kawaguchi, et Oracle. Écrit en Java, Jenkins fonctionne dans un conteneur de servlets tel qu’Apache Tomcat, ou en mode autonome avec son propre serveur Web embarqué. Il s'interface avec des systèmes de gestion de versions tels que CVS et Subversion, et exécute des projets basés sur Apache Ant et Apache Maven aussi bien que des scripts arbitraires en shell Unix ou batch Windows. Les générations de projets peuvent être initiées par différents moyens, tels que des mécanismes de planification similaires au cron, des systèmes de dépendances entre générations, ou par des requêtes sur certaines URL spécifiques. Dernièrement, Jenkins est devenue une alternative populaire à l'outil de référence CruiseControl. Le 11 janvier 2011, une proposition pour renommer Hudson a été annoncée afin d'éviter des problèmes avec un éventuel enregistrement (marque déposée) du nom par Oracle. Après l'échec des négociations avec Oracle, un vote en faveur du renommage a été entériné le 29 janvier 2011.

Nous allons voir ici comment mettre en place un serveur Jenkins qui va contrôler un serveur Selenium pour des tests unitaires sur une application en PHP de type Limesurvey.

2 Installation

Pour la partie installation, c'est facile :

Command aptitude
aptitude install jenkins nginx

Vous noterez que nous mettons un serveur Nginx en frontale pour renvoyer les requêtes vers Jenkins et absorber la charge des requêtes.

3 Configuration

3.1 Nginx

Pour Nginx, nous allons donc utiliser la fonction reverse proxy pour rediriger le flux :

Configuration File /etc/nginx/sites-available/jenkins
upstream app_server {
    server 127.0.0.1:8080 fail_timeout=0;}
 
server {
    listen 80;
    listen [::]:80 default ipv6only=on;
    server_name jenkins.deimos.fr; 
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
 
        if (!-f $request_filename) {
            proxy_pass http://127.0.0.1:8080;            break;
        }
    }
}

Adaptez ces lignes suivant votre configuration.

Puis nous activons ceci par défaut :

Command
rm -f /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/

Redémarrez ensuite Nginx pour avoir l'accès via http://jenkins-server