L’idée de JenkinsLight a germé lorsque nous nous sommes fait taper sur les doigts pour la troisième fois (à juste titre) parce que l’on avait désactivé la publicité sur nos sites de chaîne lors d’une mise en production. Or la publicité est un point critique car directement reliée au chiffre d’affaires. Le pire est que nous testions déjà le bon fonctionnement de la publicité en intégration continue sur nos serveurs de preprod, avant la mise en production. Mais une configuration légèrement différente sur les serveurs de prod rendait le nouveau code instable. Cette situation rend donc impossible la détection de certaines anomalies avant la mise en production…

D’où notre besoin d’avoir un tableau de bord nous permettant de vérifier chaque instant la disponibilité des fonctionnalités névralgiques de nos sites en production afin de réagir au plus vite en cas de problèmes. Et ce, avant même que l’anomalie ne nous soit remontée par les autres secteurs. Nous avions déjà nos tests dans Jenkins que nous avons alors fait pointer vers la prod. Il nous manquait donc juste une sorte de “Panic Board” sur un écran placé au sein de nos bureaux nous remontant rapidement le moindre problème sur nos sites en production.

Nous avons créé JenkinsLight qui permet d’afficher distinctement le statut des jobs d’une vue Jenkins en quasi temps réel. Le projet utilise AngularJS et l’API de Jenkins pour récupérer les informations nécessaires. L’installation se fait sur n’importe quel serveur web et requiert uniquement Bower pour installer les composants. Afin de permettre à l’API d’être appelée en crossdomain (CORS), il est également nécessaire d’installer un plugin spécifique sur votre serveur Jenkins.

L’application propose quelques variables de configuration éditables dans le fichier “app/scripts/config.js” permettant de spécifier :

  • l’url du serveur Jenkins,
  • l’identification au serveur (si nécessaire),
  • la vue Jenkins par défault,
  • les types de jobs affichés,
  • une regexp pour exclure certains jobs,
  • le nombre maximum de jobs par ligne sur l’écran,
  • l’intervalle de rafraîchissement (en millisecondes),
  • une image de fond quand il n’y a aucun job à afficher.

JenkinsLight est disponible en open-source sur le compte GitHub de M6Web.

Enjoy !