Jenkins Slack Integration

1. Panoramica

Quando i nostri team sono responsabili delle pratiche DevOps, spesso dobbiamo monitorare le build e altri lavori automatizzati.

In questo tutorial, vedremo come configurare due piattaforme popolari, Jenkins e Slack, per lavorare insieme e dirci cosa sta succedendo mentre le nostre pipeline CI / CD sono in esecuzione.

2. Configurazione di Slack

Cominciamo configurando Slack in modo che Jenkins possa inviargli messaggi. Per fare ciò, creeremo un'app Slack personalizzata, che richiede un account amministratore .

In Slack, creeremo un'applicazione e genereremo un token OAuth:

  • Visita //api.slack.com
  • Accedi all'area di lavoro desiderata
  • Fare clic sul pulsante Avvia creazione
  • Assegna un nome all'applicazione Jenkins e fai clic su Crea app
  • Fare clic su OAuth e autorizzazioni
  • Nel Bot Token Scopes sezione, aggiungere il Chat: scrittura portata
  • Fare clic sul pulsante Installa app sull'area di lavoro
  • Fare clic sul pulsante Accetta

Al termine, vedremo una schermata di riepilogo:

Ora, dobbiamo prendere nota del token OAuth: ne avremo bisogno in seguito quando configureremo Jenkins. Dovremmo trattarli come credenziali sensibili e tenerli al sicuro.

Per completare l'installazione di Slack, dobbiamo invitare il nuovo utente Jenkins nei canali che desideriamo che utilizzi. Un modo semplice per farlo è menzionare il nuovo utente con il carattere @ all'interno di ogni canale.

3. Installazione di Jenkins

Per configurare Jenkins, avremo bisogno di un account amministratore .

Per prima cosa, iniziamo accedendo a Jenkins e navigando su Manage Jenkins > Plugin Manager .

Quindi, nella scheda Disponibile , cercheremo Slack :

Seleziona la casella di controllo per la notifica Slack e fai clic su Installa senza riavvio .

Ora, dobbiamo configurare nuove credenziali. Andiamo a Jenkins> Credenziali> Sistema> Credenziali globali e aggiungiamo una nuova credenziale di testo segreto :

Metteremo il token OAuth da Slack nel campo Secret . Dovremmo anche fornire a queste credenziali un ID e una descrizione significativi per aiutarci a identificarli facilmente in seguito. L'archivio delle credenziali di Jenkins è un luogo sicuro in cui conservare questo token.

Dopo aver salvato le credenziali, è necessario impostare un'altra configurazione globale. In Jenkins> Gestisci Jenkins> Configura sistema , è necessario selezionare la casella di controllo Utente bot dell'app Slack personalizzato nella sezione Slack :

Ora che abbiamo completato l'installazione di Jenkins, diamo un'occhiata a come configurare i lavori e le pipeline di Jenkins per inviare messaggi Slack.

4. Configurazione di un lavoro Jenkins tradizionale

I lavori tradizionali di Jenkins di solito eseguono una o più azioni per raggiungere i loro obiettivi. Questi sono configurati tramite l'interfaccia utente di Jenkins.

Per integrare un lavoro tradizionale con Slack, utilizzeremo un'azione di post-compilazione .

Scegliamo un lavoro o ne creiamo uno nuovo. Quando scendiamo nel menu Aggiungi azione post-compilazione , troveremo Notifiche Slack :

Una volta selezionato, ci sono molti input disponibili per l'azione di notifica Slack. In genere, la maggior parte dei valori predefiniti è sufficiente. Tuttavia, ci sono alcune informazioni richieste:

  • Per quali fasi di compilazione inviare messaggi (inizio, successo, fallimento, ecc.)
  • Il nome delle credenziali da utilizzare, quelle che abbiamo aggiunto in precedenza
  • Il nome del canale Slack o l'ID membro a cui inviare i messaggi

Possiamo anche specificare campi aggiuntivi, se lo si desidera, come le informazioni di commit utilizzate per il lavoro Jenkins, messaggi personalizzati, icone bot personalizzate e altro:

Quando si impostano le cose tramite l'interfaccia utente, è possibile utilizzare il pulsante Verifica connessione per garantire che Jenkins possa raggiungere Slack. In caso di esito positivo, vedremo un messaggio di prova nel canale Slack dall'utente Jenkins:

Se il messaggio non viene visualizzato, i file di registro di Jenkins sono utili per la risoluzione dei problemi. In generale, dobbiamo ricontrollare che l'azione di post-compilazione abbia tutti i campi obbligatori , che il token OAuth sia stato copiato correttamente e che al token siano stati concessi gli ambiti appropriati quando abbiamo configurato Slack.

5. Configurazione di una pipeline Jenkins

Le condutture di Jenkins differiscono dai lavori tradizionali. Usano un singolo script Groovy, suddiviso in fasi, per definire una build. Inoltre non hanno azioni di post-compilazione, quindi usiamo lo stesso script della pipeline per inviare messaggi Slack .

Il seguente frammento di codice invia un messaggio a Slack da una pipeline Jenkins:

slackSend botUser: true, channel: 'builds', color: '#00ff00', message: 'Testing Jekins with Slack', tokenCredentialId: 'slack-token'

Proprio come con la tradizionale configurazione del lavoro di Jenkins, dobbiamo comunque specificare un nome di canale e il nome della credenziale da utilizzare.

Tramite una pipeline Jenkins, possiamo anche utilizzare una varietà di funzionalità aggiuntive di Slack, come il caricamento di file, thread di messaggi e altro.

Uno svantaggio dell'utilizzo delle condutture Jenkins è che non esiste un pulsante di test. Per testare l'integrazione con Slack, dobbiamo eseguire l'intera pipeline.

Quando si impostano le cose per la prima volta, possiamo creare una nuova pipeline che contiene solo il comando Slack mentre stiamo facendo funzionare le cose.

6. Considerazioni aggiuntive

Ora che abbiamo collegato Jenkins e Slack, ci sono alcune considerazioni aggiuntive.

In primo luogo, una singola istanza di Jenkins può comunicare con più aree di lavoro Slack . Tutto quello che dobbiamo fare è creare un'applicazione personalizzata e generare un nuovo token per ogni area di lavoro. Finché ogni token viene archiviato come una propria credenziale in Jenkins, è possibile pubblicare lavori diversi in aree di lavoro diverse.

Sulla stessa linea, un diverso lavoro di Jenkins può essere pubblicato su diversi canali Slack . Questa è un'impostazione per lavoro nelle azioni post-compilazione che configuriamo. Ad esempio, i lavori relativi alle build del software potrebbero essere pubblicati su un canale di solo sviluppo. E i lavori relativi al test o alla produzione potrebbero andare ai loro canali dedicati.

Infine, mentre abbiamo esaminato uno dei plugin Slack più popolari per Jenkins, che fornisce un controllo preciso su cosa inviare, ci sono una serie di altri plugin che servono a scopi diversi. Ad esempio, se vogliamo che ogni lavoro Jenkins invii la stessa notifica, esiste un plug-in Global Slack Notifier che potrebbe essere più adatto per questo.

7. Conclusione

In questo articolo, abbiamo visto come integrare Jenkins e Slack per ottenere feedback sulle nostre pipeline CI / CD.

Utilizzando un plug-in Jenkins, insieme a un'applicazione Slack personalizzata, siamo stati in grado di inviare messaggi da Jenkins a Slack. Ciò consente ai team di notare lo stato dei lavori di Jenkins e di affrontare i problemi più rapidamente.