Intégration continue : de Jenkins à Gitlab CI

L’intégration continue a toujours été un élément très important pour l’équipe technique du Groupe PSIH.
Lorsque nous nous appelions encore PMSIpilot et que nous ne maintenions qu’une seule suite logicielle, les tests, et la qualité en général, étaient déjà très importants. À l’époque, nous utilisions exclusivement Jenkins pour lancer nos jobs automatiquement.

Nous avons donc historiquement un cluster qui a évolué au fil des années. Nous avons commencé avec quelques slots puis nous sommes passés à quelque chose de plus important, avec une dizaine de serveurs (un maître et neuf esclaves) et donc beaucoup plus de slots. Cela nous allait parfaitement, d’autant qu’à cette époque nous n’utilisions pas de solution de gestion de code source telle que Github ou Gitlab.

Il y a environ 4 ans, nous avons décidé de migrer toute notre gestion de code source sur Gitlab et depuis, nous avons scrupuleusement suivi toutes ses mises à jour. Nous appliquons chaque mise à jour 1 mois après sa sortie officielle afin de bénéficier directement de tous les correctifs mineurs. Du coup, à un moment, nous avons hérité de Gitlab CI.

Nous n’avons pas commencé à l’utiliser tout de suite. Jenkins nous allait très bien malgré quelques problèmes liés à sa lourdeur et à sa complexité. Au fil du temps, ces problèmes sont devenus de plus en plus présents et nous avions une boucle de feedback de plus en plus longue sur les développements : il n’était plus possible d’attendre une demi-heure, voir plus, pour avoir le résultat de nos tests unitaires.
Gitlab CI était donc notre sauveur !

Nous avons donc commencé, petit à petit, à migrer les jobs les moins complexes vers Gitlab CI. Ce changement a été très bénéfique car, non seulement notre boucle de feedback a été drastiquement réduite, mais nous avons en plus un retour immédiat directement dans Gitlab, dans les Merge Requests. On peut donc facilement consulter les commentaires de revue de code et le statut de l’intégration continue.

Il nous restait un problème à régler : nous n’avons pas pu nous passer totalement de Jenkins. En effet, Gitlab CI tourne, chez nous, sur une infrastructure basée sur Docker et nous devons être capable de construire et lancer des machines virtuelles en intégration continue. Jenkins était déjà équipé pour cela et porter tous ces mécanismes dans Gitlab CI était trop coûteux. Du coup, les développeurs se retrouvaient souvent à passer de Gitlab à Jenkins afin de planifier correctement leurs jobs et consulter leurs statuts.

C’est comme ça que Jenklab CI est né !

Jenklab CI

Ce petit outil, écrit en Javascript et utilisable en ligne de commande ou via un conteneur Docker, utilise l’API de Jenkins et nous permet de faire un pont avec Gitlab CI : il est capable d’exécuter un job Jenkins depuis un pipeline Gitlab CI en injectant toutes les variables prédéfinies par l’environnement d’intégration continue de Gitlab.

Grâce à cela, nous avons pu régler les problèmes que nous avions : nous pouvons garder en l’état tous nos jobs qui construisent et déploient nos machines virtuelles et nous avons un retour direct dans Gitlab, dans l’interface des Merge Requests.

Jenklab CI se veut simple et efficace : il ne propose pas de fonctionnalité très avancée, juste le strict minimum pour garantir un confort d’utilisation de nos deux solutions d’intégration continue. En bonus, nous pouvons utiliser toutes les options proposées par Gitlab CI pour choisir quand lancer un job Jenkins (déclenchement manuel, automatique …)

J’ai déjà donc cité le fait que les variables de l’environnement Gitlab CI sont transmises à Jenkins, ce qui est idéal pour configurer automatiquement vos jobs en fonction de certains paramètres (branche Git à utiliser, dépôt à cloner …).

Le log du job Jenkins est affiché directement dans la console Gitlab CI, nous pouvons donc garder l’historique complet des exécutions même si, du côté de Jenkins, les logs sont purgés régulièrement.

Pour finir, Jenklab CI est capable d’annuler un job Jenkins lorsque le job correspondant est annulé dans Gitlab CI.

Nous utilisons cette solution depuis quelques mois maintenant pour tous nos jobs qui sont coûteux en temps, qui demandent une infrastructure plus complexe ou qui déploient des livrables (la construction et publication de nos RPMs par exemple). Nous sommes très satisfaits de cet outil.

Si vous souhaitez l’utiliser, n’hésitez pas à jeter un oeil au dépôt sur Github et éventuellement à nous soumettre vos remarques ou demandes d’évolution.


Le Groupe PSIH recrute des développeurs(euses) pour son équipe R&D. Si vous êtes intéressé(e)s, n’hésitez pas à consulter l’offre et à nous contacter.

 

Le prix du CHUM remporté dans le coopérathon

Le 4 novembre dernier avait lieu la grande finale du coopérathon 2016.

L’équipe PMSIpilot Canada à participé à un projet avec le CHU mère-enfant de Sainte Justine.

Ce projet est une application de « Suivi Sécuritaire en Service Clinique ». Il s’agit d’un écran qui représente les chambres d’un service en reprenant leur configuration physique. Dans chaque chambre sont affichés une quinzaine d’informations dont notamment une alerte en cas de nécessité pour le personnel d’intervenir en urgence.

plus d’information sur le descriptif officiel du projet.

Notre équipe a remporté le prix du CHUM ( CHU de Montréal ) !!!
cooperathon victoire pmsipilot

 

3 membres de PMSIpilot participent au Cooperathon 2016 Montréal

Le coopérathon, c’est un lieu de rencontre entre des idées, des besoins et des compétences provenant de divers horizons qui se réunissent pour y répondre.

Marouane, Alexandre et Michaël, tous trois membres du bureau PMSIpilot CANADA, participent cette année au volet Santé du Coopérathon de Montréal.

Le lancement officiel aura lieu ce vendredi 7 octobre au centre de recherche du CHUM.

D’autres informations seront ajoutées tout au long de l’événement qui se terminera le 4 novembre. À bientôt avec plus de détail sur le projet sur lequel nous embarquerons ;)

pmsipilot-canada-wide

PMSIpilot Canada 1176 rue BISHOP H3G 2E3 Montreal, Qc +1 514-370-5452
 

Retour sur le Forum PHP 2015

Encore un évènement autour de PHP qui se termine. Encore un Forum assez exceptionnel pour moi. Beaucoup de rencontres, de débats intéressants et un maximum de partage !

Encore une fois, l’AFUP et les conférenciers ont fait un travail monumental pour nous proposer un évènement de qualité dans un lieu très sympatique avec une ambiance exceptionnelle.

Un évènement très riche en rencontres qui m’a permis d’apprendre de nouvelles choses, d’ouvrir les yeux sur d’autres mais surtout, d’échanger… et de consommer beaucoup de café :)

… 

 

La CNIL donne un avis favorable à nos dispositifs

Le 21 Juin 2011, trois inspecteurs de la CNIL ont procédé à une revue complète des systèmes d’informations et des procédures informatiques liées à l’activité de PMSIpilot.

Ils se sont assurés :
– des modalités de gestion des produits PMSIpilot (maintenance, mises à jour)
– que PMSIpilot ne disposait d’aucun accès à des données non anonymes contrôlées, optimisées et analysées aujourd’hui par plus de 550 hôpitaux grâce aux logiciels PMSIpilot.
– de l’usage fait des données d’activités médicales anonymes faites par PMSIpilot dans le cadre de notre produit BRN Bases RégioNales.

Suite au contrôle, un avis favorable de la CNIL a été émis précisant que les différentes activités contrôlées étaient conforme aux lois en vigueur.

 

Excellente année 2010

Toute l’équipe technique de PMSIpilot vous souhaite une excellente année 2010.

Au programme pour nous cette année :

  • la création de nouveaux logiciels toujours plus performants et utiles,
  • de nombreuses évolutions,
  • le passage à une nouvelle version de Symfony (si on a le courage !),
  • le renforcement de notre équipe avec l’acquisition de nouveaux locaux (700 m²) !

A ce propos, je (Olivier Mansour, le directeur technique de PMSIpilot) serais présent au Symfony Live 2010.  Il y a des postes de développeurs Symfony à pourvoir, si vous êtes intéressé, n’hésitez pas à me contacter afin que nous nous rencontrions sur Paris.