8.7. Messagerie instantanée

La messagerie instantanée (ou IM) est aujourd'hui largement utilisée comme un moyen rapide et léger de communication, aussi bien professionnelle que personnelle. La messagerie instantanée est, par définition, instantanée, ce qui lui donne un avantage sur l'email quand il s'agit de notification rapide. Elle est également «push» plutôt que «pull». Lorsque vous recevez un message, il apparaîtra sur votre écran et attirera votre attention. Il est un peu plus difficile de l'ignorer ou de reporter qu'un simple message email.

Jenkins offre un bon support pour les notifications via messagerie instantanée. Le plugin Instant Messaging fournit un support générique pour communiquer avec Jenkins via la messagerie instantanée. Des plugins spécifiques peuvent ensuite être ajoutés pour différents protocoles de messagerie instantanée tels que Jabber ou IRC.

8.7.1. Notification par IM avec Jabber

De nombreux serveurs de messagerie instantanée sont basés sur Jabber, un protocole de messagerie instantanée open source et basé sur XML. Jenkins fournit un bon support pour la messagerie instantanée Jabber, de telle sorte que les développeurs peuvent recevoir des notifications en temps réel des échecs de build. De plus, le plugin exécute un robot de messagerie instantanée qui écoute les canaux de communication et permet aux développeurs d'exécuter des commandes sur le serveur Jenkins via des messages instantanés.

La mise en place du support de messagerie instantanée dans Jenkins est simple. D'abord, vous devez installer à la fois le plugin Jenkins instant-messaging et le plugin Jenkins Jabber Notifier en utilisant la page standard du gestionnaire de plugins et en redémarrant Jenkins (voir Figure 8.9, “Installation des plugins Jenkins de messagerie instantanée”).

Installation des plugins Jenkins de messagerie instantanée

Figure 8.9. Installation des plugins Jenkins de messagerie instantanée


Une fois cela fait, vous devez configurer votre serveur de messagerie instantanée. N'importe quel serveur Jabber peut faire l'affaire. Vous pouvez utiliser un service public comme Google Chat, ou configurer votre propre serveur de messagerie instantanée localement (le serveur de messagerie instantannée open source Java OpenFire est un bon choix). Utiliser un service public pour les communications internes peut être mal vu par les administrateurs système, et vous pouvez avoir des difficultés pour passer les firewalls de l'entreprise. D'autre part, configurer votre propre service de messagerie interne a du sens pour une équipe de développement ou toute autre organisation en général, car il fournit un autre canal de communication qui fonctionne bien pour partager des questions techniques ou commentaires entre développeurs. Les exemples suivants utiliseront un serveur OpenFire local, mais l'approche générale fonctionne pour tout serveur Jabber- compatible .

La première étape consiste à créer un compte dédié sur votre serveur Jabber pour Jenkins. Celui-ci est juste un compte de messagerie instantannée ordinaire, mais il doit être distinct des comptes de vos développeurs (voir Figure 8.10, “Jenkins nécessite son propre compte de messagerie instantanée”).

Jenkins nécessite son propre compte de messagerie instantanée

Figure 8.10. Jenkins nécessite son propre compte de messagerie instantanée


Une fois que vous avez configuré un compte de messagerie instantanée, vous devez configurer Jenkins pour envoyer des notifications par message instantané via ce compte. Allez à la page de configuration principale et cochez la case Enable Jabber Notification (voir Figure 8.11, “Mise en place de notifications de base Jabber dans Jenkins” ). Ici, vous fournissez l'identifiant Jabber et le mot de passe pour votre compte. Jenkins peut habituellement retrouver le serveur de messagerie à partir de l'identifiant Jabber (s'il est différent, vous pouvez le remplacer dans les options avancées). Si vous utilisez les canaux de communication en groupe (une autre stratégie de communication utile pour les équipes de développement), vous pouvez aussi renseigner ici le nom de ces salons de discussion. De cette façon, Jenkins sera en mesure de traiter les instructions envoyées dans les salons de chat, ainsi que ceux reçus comme des messages directs.

Mise en place de notifications de base Jabber dans Jenkins

Figure 8.11. Mise en place de notifications de base Jabber dans Jenkins


C'est tout ce dont vous avez besoin pour une configuration de base. Cependant, vous devrez peut-être donner quelques informations supplémentaires dans la section avancée pour des détails qui sont spécifiques à votre installation (voir Figure 8.12, “Configuration avancée Jabber”). Ici, vous pouvez spécifier le nom et le port de votre serveur Jabber s'ils ne peuvent être dérivés de l'identifiant Jenkins Jabber. Vous pouvez également fournir un suffixe par défaut qui peut être appliqué à l'utilisateur Jenkins pour générer l'identifiant Jabber correspondant. Surtout, si vous avez sécurisé votre serveur Jenkins, vous devrez fournir un nom d'utilisateur et un mot de passe Jenkins valides afin que le robot de messagerie instantanée puisse réagir correctement aux instructions.

Configuration avancée Jabber

Figure 8.12. Configuration avancée Jabber


Une fois configuré, vous devez définir une stratégie de notification Jabber pour chacune de vos tâches de build. Ouvrez la page de configuration de tâche de build et cliquez sur l'option Jabber Notification.

D'abord, vous devez définir une liste de destinataires pour les messages. Vous pouvez envoyer des messages à des individus (utilisez simplement l'identifiant Jabber correspondant, tel quejoe@jabber.acme.com) ou à des salons de messagerie instantanée que vous avez créé. Pour les salons, vous devez normalement ajouter une “*” au début de son identifiant (ex : “*gameoflife@conference.jabber.acme.org”). Cependant, si cet identifiant contient “@conference.”, Jenkins comprendra qu'il s'agit d'un salon de messagerie instantanée et ajoutera automatiquement l'“*”. L'approche basée sur un salon est la plus souple bien que pour que cette stratégie soit vraiment efficace, vous devez être sûr que les développeurs y sont connectés en permanence.

Vous devez aussi définir une stratégie de notification. Celle-ci détermine lesquels de vos résultats de build provoqueront un envoi de message. Les options sont:

all

Envoie une notification pour chaque build.

failure

Envoie une notification uniquement pour les builds échoués et instables.

failure and fixed

Envoie une notification pour les builds échoués et instables, et le premier build en succès après un build échoué ou instable.

change

Envoie une notification quand le résultat de build change.

Si vous utilisez les salons de messagerie instantanée, vous pouvez demander à Jenkins d'envoyer une notification au salon lorsqu'un build démarre (en utilisant l'option “Notify on build starts”).

En ce qui concerne les builds démarrés par les systèmes de gestion de version, Jenkins peut aussi notifier des destinataires supplémentaires. Pour cela, il faut utiliser le suffixe par défaut décrit précédemment afin de générer l'identifiant Jabber à partir de l'utilisateur du système de gestion de version. Vous pouvez choisir de notifier :

SCM committers

Tous les utilisateurs qui ont committé des changements pour le build courant, et donc soupçonnés d'avoir cassé le build.

SCM culprits

Tous les utilisateurs qui ont committé des changements depuis le dernier build avec succès.

SCM fixers

Tous les utilisateurs qui ont committé des changements du premier build avec succès après un build échoué ou instable.

Upstream committers

Envoie une notification aux utilisateurs qui ont committé des changements pour les builds en amont et courant. Cela fonctionne automatiquement pour les tâches de build Maven, mais nécessite d'activer l'empreinte numérique (fingerprint) des autres types de systèmes de build.

Au moment de la rédaction, vous ne pouvez définir qu'une stratégie de notification. Ainsi, certaines des options avancées que nous avons vu dans Section 8.3, “Notification par email avancée” ne sont pas encore disponibles pour la messagerie instantanée.

Les développeurs seront notifiés via leur client de messagerie instantanée favori (voir Figure 8.13, “Messages Jenkins Jabber en action”). Ils peuvent aussi interagir avec le serveur de build via une session de messagerie en utilisant un ensemble de commandes simples dont voici les plus utiles :

  • !build game-of-life—Démarre le build game-of-life immédiatement.

  • !build game-of-life 15m—Démarre le build game-of-life dans 15 minutes.

  • !comment game-of-life 207 'oops'—Ajouter une description au build défini.

  • !status game-of-life—Affiche le status du dernier build de cette tâche de build.

  • !testresult game-of-life—Affiche le résultat complet du dernier build.

  • !health game-of-life—Affiche un résumé plus complet de l'état de santé du dernier build.

Vous pouvez obtenir une liste complete des commandes en envoyant le message !help à l'utilisateur Jenkins.

Messages Jenkins Jabber en action

Figure 8.13. Messages Jenkins Jabber en action


8.7.2. Notification avec IRC

Une autre forme de messagerie instantanée Internet populaire est Internet Relay Chat, ou IRC. IRC est traditionnellement centré sur les groupes de discussions (même si la messagerie directe est également supportée). Elle est une forme de communication très populaire parmi les développeurs, en particulier dans le monde open source.

Le plugin Jenkins IRC vous permet d'interagir avec votre serveur Jenkins via un canal IRC, à la fois pour recevoir des messages de notification, mais aussi pour envoyer des commandes au serveur. Comme le plugin Jabber, vous devez installer le plugin Instant Messaging pour que le plugin Jenkins IRC fonctionne.