Ce billet de blog vous guidera dans la création d’une requête automatique qui vous permettra d’annoncer au canal Mattermost de votre choix qu’une nouvelle version de votre logiciel préféré vient d’être construite par Jenkins.
Pour information, il existe sur GITHUB un plugin pour Jenkins qui réalise ce travail mais la méthode livrée ici peut être adaptée pour tout autre flux d’information.
Préparation de Mattermost
Conditions préalables de réalisation :
- un serveur Jenkins,
- un serveur Mattermost,
- création d’un « webhook » dans Mattermost
Requête curl dans mon job Jenkins
Conditions de départ :
- Identifiant du « webhook » : abcdefghijklmnop
- URL du serveur Mattermost : https://mymattermost.com
- URL du serveur Jenkins : https://myjenkins.com
- Nom du « job » de construction Jenkins : alfresco6
En admettant que le « job » jenkins vous fournisse par exemple des variables comme :
- BUILD_URL (URL résultat de la construction dans Jenkins)
- _PROJECT_VERSION (Version générée du logiciel)
- _BRANCH_NAME (Nom de la branche GIT sur laquelle est hébergé le projet logiciel)
- CHANNEL (Nom du canal Mattermost dans lequel Jenkins va communiquer)
Il vous faut vous rendre sur la page de configuration de votre projet Jenkins et ajouter une étape au build (si elle n’existe pas déjà) : « Exécuter un script shell »
C’est dans la zone de texte prévue à la définition du script shell qui vous allez définir la requête qui sera envoyée à Mattermost.
Note : vous pourriez également profiter de ce script pour initialiser les variables citées en exemple et bien plus encore.
Voici la requête à saisir, dans une variable dans un premier temps :
REQUETE="curl -i \ -X POST \ -H 'Content-Type: application/json' \ -d '{ \ \"channel\": \"$CHANNEL\", \ \"icon_url\": \"https://www.mattermost.org/wp-content/uploads/2016/04/icon.png\", \ \"attachments\": [{ \ \"fallback\": \"Nouvelle construction Jenkins\", \ \"color\": \"#FF8000\", \ \"text\": \"Informations sur la construction :\", \ \"author_name\": \"Jenkins\", \ \"author_icon\": \"https://myjenkins .com/url/vers/photo/jenkins.png\", \ \"author_link\": \"https://myjenkins.com/\", \ \"title\": \"Nouvelle version déployée\", \ \"title_link\": \"$BUILD_URL\", \ \"fields\": [{ \ \"short\":true, \ \"title\":\"Branche\", \ \"value\":\"$_BRANCH_NAME\" \ }, \ { \ \"short\":true, \ \"title\":\"Version\", \ \"value\":\"$_PROJECT_VERSION\" \ }, \ { \ \"short\":false, \ \"title\":\"Détails\", \ \"value\":\"$BUILD_URL\" \ }] \ }] \ }'\ https://mymattermost.com/hooks/abcdefghijklmnop"
Elle sera exécutée dans un second temps grâce à la ligne suivante :
Résultat : un beau post Mattermost
Désormais, si vous avez défini l’exécution de ce script en tout dernier lieu de la construction réussie, un message sera envoyé dans votre canal Mattermost préféré pour prévenir tous les participants qu’une nouvelle version est prête. Voici un aperçu de ce rendu :
Le rendu de ce message est donné à titre d’exemple. On peut imaginer fournir d’autres informations, une toute autre disposition des éléments, l’ajout d’images, …
Hope this helps.