Google chrome extension et jquery, le couple gagnant
Introduction
Bonjour à tous et bonne année tardive... Je n’ai pas écris sur le blog depuis un petit moment déjà. Vous m’en voyez désolé. Mon actualité personnelle et professionnelle ne me permettant pas de dégager suffisamment de temps. Je suis depuis le 17 janvier à mon compte, et viens de créer ma société (Technov), j’officie désormais en tant qu’informaticien indépendant.
Contexte
En tant que Teamleader/scrumaster dans ma nouvelle mission (ce type de poste à double compétence semble être de plus en plus fréquent), et travaillant dans un contexte ou plusieurs équipes de dév travaillent sur la même branche de code. Je me dois de veiller à ce que les membres de mon équipe ne s'égarent à quelques commit audacieux (non testés), et en viennent à «péter le build».
Dans un contexte agile, ou un build cassé empêche le déploiement de la dernière version sur les serveurs d’intégration, et donc le bon déroulement de la recette continue, sa correction devient tout de suite la priorité numéro 1 de l'équipe responsable.
Nous utilisons hudson, et celui ci offre de multiples façons de nous avertir d’un changement d'état du build, notifications par messagerie instantanée, email, extensions dans le navigateur.
Cependant, si le serveur d’intégration continue est en charge de plusieurs dizaines de build, des notifications non souhaitées peuvent venir brouiller l’information. L’information peut alors être perdue parmi tant d’autres, et donc non lue.
Là ou je travaillais auparavant, une équipe avait mis en place un nabaztag arborant la couleur courante du build, vert quand tout allait bien, rouge, dans l’autre case.
Cela a cependant l’inconvénient de ne pouvoir surveiller qu’un build à la fois.
Sur mon poste de développement, un navigateur web est ouvert 24h/24 , en l’occurrence chrome. Celui ci propose depuis quelques temps des notifications desktop, celles-ci apparaissent en dehors de la fenêtre du navigateur pour notifier l’utilisateur. Ayant ouï dire des facilités de développements d’extensions pour ce navigateur, j’ai voulu tenter le coup.
Cahier des charges
- Permet de suivre l'état de n build sur un serveur d’intégration continue (hudson ou jenkins),
- On doit pouvoir sélectionner uniquement les build nous concernant via de simples cases à cocher,
- Une notification visuelle doit être affichée clairement à l’utilisateur,
- N’ayant pas beaucoup de temps, le développement ne doit pas prendre trop longtemps.
Facilités fournies par le navigateur google chrome :
- localstorage permettant de persister les informations entre chaque redémarrage du navigateur (url CI, temps de raffraichissement, build devant être suivi),
- notifications desktop,
- Avoir une page qui tourne en arrière plan chargé de pinguer le serveur d’intégration pour vérifier l'état de build (à ce propose, hudson/jenkins dispose d’une API simple à utiliser au format xml/json),
- Page d’option permettant de définir des préférences utilisateur,
- Facilité de debugging via l’outil de développement.
Tout ceci a fait que j’ai pu développer cette petite exntesion, en environ 6 heures.
L’extension étant principalement codée en javascript, je me suis servi de jquery pour réaliser les appels ajax au serveur d’intégration, sérialiser/désérialiser les échanges json.
L’utilisation de jquery a vraiment été un accèlérateur. Je ne pourrais qu’encourager son usage (pour tous développements javascript d’ailleur).
Comment l’obtenir :
- L’extension ci-chrome-notification est disponible en téléchargement sur le catalogue d’extensions de google chrome,
- Le code source est disponible et librement utilisable sur github, je vous invite à le forker et/ou proposer de nouvelles fonctionnalités via l’onglet problème fourni par github.