Skip to content

LAB : Configuration Jenkins / Slack pour le partage des informations de build aux équipes#

Présentation#

L'un des piliers fondamentaux du DevOps est la communication. Les parties prenantes devraient être continuellement informés des événements produits par les mécanismes mises en place, en l'occurrence l'hyper-automatisation des processus.

Slack est un outil collaboratif facilitant la communication entre acteurs par échange directe ou via des canaux regroupant plusieurs utilisateurs. Il dispose d'une multitude de plugins facilitant son intégration avec la plupart des outils de l'écosystème DevOps.

Dans le cadre de ce lab, nous allons intégrer Slack avec Jenkins pour afficher dans un canal dédié les résultats des builds.

Objectifs:#

  • Découverte de slack
  • Integration de Slack avec Jenkins
  • Création d'un pipeline basique incluant une notification slack

Prérequis#

  • Connaissance de Docker
  • Instance docker fonctionnel
  • Editeur de code
  • Utilitaire installé sur la machine: git
  • Avoir une instance jenkins fonctionnel sinon voir le lab sur la mise en place de Jenkins

Déroulement du Lab#

Etape 1 : Creation d'un compte slack#

  • Accéder à l'url https://slack.com/intl/fr-fr/get-started#/createnew

  • Rentrer votre adresse email puis cliquer sur Continuer

  • Récupérer le code reçu via email et coller la zone de saisie du code (vérifiez vos spams si vous ne voyez pas le code)

  • Créer un espace de travail pour commencer en cliquant sur Créer un espace de travail

  • Donner un nom à votre equipe ou organization (le nom doit être unique) puis cliquer sur Suivant

  • Ajouter un nom et votre photo au besoin puis cliquer sur Suivant

  • Ajouter directement vos collègues à cette étape ou le faire plus tard. Cliquer sur Ignorer cette étape

  • Valider le popup de configuration en cliquant sur Passer cette étape

  • Indiquer sur quoi travaille votre équipe, pour notre cas Training DevOps. Cele permettra de créer un canal par défaut nommé training-devops

  • Cliquer sur Commencer avec le forfait gratuit pour continuer

  • Votre espace slack va ressembler à l'image suivante

Etape 2 : Creation d'un canal pour les build jenkins#

  • Ajouter un nouveau canal reservé aux builds jenkins sur Slack en cliquant sur Ajouter des canaux puis sur créer un nouveau canal

  • Indiquer le nom du canal par exemple jenkins-lcf

  • Ignorer les invitations en cliquant sur Ignorer pour l'instant

  • Choisir la visibilité privée puis créer

Etape 3 : Ajout de l'application Jenkins à Slack#

  • Sur l'interface d'accueil de Slack, Cliquer sur ... Plus puis sur "Automatisation"

  • Cliquer sur le sous menu Applications

  • Rechercher Jenkins sur la barre de recherche et cliquer sur Ajouter

  • Un nouvel onglet sera ouvert. Cliquer sur Ajouter à Slack

  • Choisir le canal jenkins-lcf puis cliquer sur Ajouter l'intégration Jenkins CI

Une page contenant tous les détails d'intégration vous sera affichée. Vous y trouverez 2 paramètres essentiels à garder soigneusement: Sous-domaine de l’équipe et Identifiant d’authentification du jeton d’intégration

Etape 4: Installation et configuration du plugins Slack sur Jenkins#

  • Sur la page d'accueil de Jenkins, cliquer sur Administer Jenkins puis sur plugins

  • Cliquer sur plugins disponible, rechercher Slack Notification, cocher la ligne coresspondante puis cliquer sur Installer

  • Le plugin est bien installé. Cliquer sur Administer Jenkins

  • Cliquer sur System

  • Rechercher la section Slack

Renseigner les informations suivantes:

() Juste en dessous Credential* cliquer sur Ajouter puis Jenkins

--> Sur Type selectionner secret-text

--> Dans Secret, indiquer l'identifiant d’authentification du jeton d’intégration

--> Dans ID et Description, mettre slack-token

--> cliquer sur Ajouter

() Workspace*: Le nom de votre espace de travail. Vous pouvez le retrouver sur votre url SLACK qui est de la forme https://.slack.com . Pour notre cas, ce sera lecloudfacile

() Credential*, selectionner le credential slack-token**

(*) Cliquer sur Tester Connection, normalement vous verrez success affiché

  • Scroller en bas de page puis cliquer sur Save

Etape 5: Création d'un pipeline de test#

  • Créer un nouveau pipeline avec le code suivant:
pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                sh 'docker ps'
            }
        }
    }
    post {
        always {
            //Add channel name
            slackSend channel: "jenkins-lcf", 
            message: "Find Status of Pipeline:- ${currentBuild.currentResult} ${env.JOB_NAME} ${env.BUILD_NUMBER} ${env.BUILD_URL}"
        }
    }
}

La méthode slackSend permet d'envoyer des notifications sur Slack. Pour plus de détails, consulter la documentation

Après execution, vous allez recevoir une notification dans le canal slack.