Serveur d'intégration continue avec Jenkins sur un Raspberry Pi 2 et un Arduino

DIY (Do It Yourself)

Logo Raspberry Pi Logo Arduino Logo Jenkins

Lors d'un projet, j'ai développé une application de vente en ligne en Java EE. Dans l'équipe, chacun travaillait sur une fonctionnalité, créait ses propres tests unitaires et poussait son code sur Bitbucket (Mercurial). Pour vérifier de façon indépendante de la machine de chacun si le code poussé sur Bitbucket ne cassait rien, il a été convenu d'utiliser un outil d'intégration continue. Ayant acheté un Raspberry Pi 2 et disposant déjà d'un Arduino, je me suis amusé à configurer Jenkins pour cette tâche.


Eléments nécessaires :
_ un Raspberry Pi 2,
_ un Arduino,
_ une breadboard (platine d'expérimentation),
_ des fils à breadboard (renforcés),
_ trois LEDs,
_ un cable Ethernet.

Configuration du Raspberry Pi 2 :
Après avoir installé Raspbian et permis le SSH pour communiquer avec mon Raspberry Pi (RPi), j'ai installé Jenkins dessus. J'ai pris la dernière version disponible de Jenkins sur le site officiel à partir d'un wget plutôt que de le récupérer à partir d'un apt-get. Pourquoi ? La version disponible dans les packages était assez obsolète.
Après avoir installé Jenkins, il faut le configurer et choisir sa version de java (possibilité d'utiliser l'OpenJDK), celle de Maven (si votre projet l'utilise) et quel gestionnaire de version à utiliser.
Ensuite, avec un peu de configuration intrinsèque à Jenkins, il est donc possible de récupérer automatiquement à intervalles réguliers les potentielles modifications disponibles sur notre serveur et faire son build. J'ai choisi deux minutes (* 2 * * *), mon build étant assez rapide.
On peut récupérer l'état du dernier build à l'aide d'une api à l'adresse : http://myjenkins/job/myjob/lastBuild/api/json . En parsant ce json, on peut donc récupérer notre état. On va utiliser un script écrit en python pour parser ce json, obtenir la valeur de l'état en temps réel puis l'envoyer vers le port série TTL de l'Arduino.
Voici le script en python : Arduino.py

Configuration de l'Arduino :
Il suffit de brancher l'Arduino en USB sur le RPi et de brancher les LEDs comme indiqué sur le schéma ci-dessous.

Schéma Arduino LEDs

Voici ensuite le script à charger dans l'Arduino : Arduino.txt

Et voilà, c'est fini ! Tout est fonctionnel.

Raspberry Pi + Arduino + Jenkins
De haut en bas : Breadboard avec ses LEDs, Arduino dans un boîtier créé lors d'un workshop, Raspberry Pi 2 dans un boîtier arc-en-ciel.

Michaël

Faurel

Developpeur

Informatique