Integrasi Jenkins Slack

1. Ikhtisar

Saat tim kami bertanggung jawab atas praktik DevOps, kami sering kali perlu memantau build dan pekerjaan otomatis lainnya.

Dalam tutorial ini, kita akan melihat cara mengonfigurasi dua platform populer, Jenkins dan Slack, untuk bekerja sama dan memberi tahu kami apa yang terjadi saat pipeline CI / CD kami berjalan.

2. Menyiapkan Slack

Mari kita mulai dengan mengonfigurasi Slack agar Jenkins dapat mengirim pesan ke sana. Untuk melakukan ini, kami akan membuat aplikasi Slack khusus, yang membutuhkan akun Administrator .

Di Slack, kami akan membuat aplikasi dan membuat token OAuth:

  • Kunjungi //api.slack.com
  • Masuk ke ruang kerja yang diinginkan
  • Klik Mulai Membangun tombol
  • Beri nama aplikasi Jenkins dan klik Buat Aplikasi
  • Klik OAuth & Izin
  • Di bagian Bot Token Scopes , tambahkan chat: write scope
  • Klik Install Aplikasi untuk Workspace tombol
  • Klik tombol Terima

Setelah ini selesai, kita akan melihat layar ringkasan:

Sekarang, kita perlu mencatat token OAuth - kita akan membutuhkannya nanti saat kita mengkonfigurasi Jenkins. Kita harus memperlakukan ini sebagai kredensial sensitif dan menjaganya tetap aman ..

Untuk menyelesaikan penyiapan Slack, kita harus mengundang pengguna Jenkins baru ke saluran yang ingin kita gunakan. Salah satu cara mudah untuk melakukannya adalah dengan menyebutkan pengguna baru dengan karakter @ di dalam setiap saluran.

3. Menyiapkan Jenkins

Untuk menyiapkan Jenkins, kami membutuhkan akun administrator .

Pertama, mari kita mulai dengan masuk ke Jenkins dan membuka Kelola Jenkins > Manajer Plugin .

Kemudian, di tab Tersedia , kami akan mencari Slack :

Mari pilih kotak centang untuk Pemberitahuan Slack dan klik Instal tanpa restart .

Sekarang, kita perlu mengkonfigurasi kredensial baru. Mari buka Jenkins> Credentials> System> Global Credentials dan tambahkan kredensial teks Rahasia baru :

Kami akan memasukkan token OAuth dari Slack ke bidang Rahasia . Kami juga harus memberi kredensial ini ID dan deskripsi yang bermakna untuk membantu kami mengidentifikasinya dengan mudah nanti. Penyimpanan kredensial Jenkins adalah tempat yang aman untuk menyimpan token ini.

Setelah kami menyimpan kredensial, ada satu lagi konfigurasi global yang harus disetel. Di bawah Jenkins> Kelola Jenkins> Konfigurasi Sistem , kita perlu memeriksa kotak centang Pengguna bot aplikasi slack kustom di bawah bagian Slack :

Sekarang setelah kita menyelesaikan penyiapan Jenkins, mari kita lihat cara mengonfigurasi tugas dan pipeline Jenkins untuk mengirim pesan Slack.

4. Mengonfigurasi Pekerjaan Jenkins Tradisional

Pekerjaan tradisional Jenkins biasanya melakukan satu atau lebih tindakan untuk mencapai tujuan mereka. Ini dikonfigurasi melalui antarmuka pengguna Jenkins.

Untuk mengintegrasikan pekerjaan tradisional dengan Slack, kami akan menggunakan tindakan pasca-pembangunan .

Mari pilih pekerjaan apa saja, atau buat yang baru. Saat kita menurunkan menu Add post-build action , kita akan menemukan Slack Notifications :

Setelah dipilih, ada banyak input yang tersedia untuk tindakan Notifikasi Slack. Umumnya, sebagian besar nilai default sudah cukup. Namun, ada beberapa informasi yang diperlukan:

  • Fase build mana untuk mengirim pesan (mulai, sukses, gagal, dll)
  • Nama kredensial yang akan digunakan - yang kami tambahkan sebelumnya
  • Nama saluran Slack atau ID anggota yang akan dikirimi pesan

Kami juga dapat menentukan bidang tambahan jika diinginkan, seperti informasi komit yang digunakan untuk pekerjaan Jenkins, pesan khusus, ikon bot khusus, dan banyak lagi:

Saat menyiapkan melalui UI, kita dapat menggunakan tombol Test Connection untuk memastikan bahwa Jenkins dapat mencapai Slack. Jika berhasil, kita akan melihat pesan pengujian di saluran Slack dari pengguna Jenkins:

Jika pesan tidak muncul, file log Jenkins berguna untuk pemecahan masalah. Secara umum, kita perlu memeriksa ulang bahwa tindakan pasca-build memiliki semua kolom yang diperlukan , apakah token OAuth disalin dengan benar, dan bahwa token diberi cakupan yang sesuai saat kita mengonfigurasi Slack.

5. Mengonfigurasi Pipeline Jenkins

Jenkins Pipelines berbeda dari pekerjaan tradisional. Mereka menggunakan satu skrip Groovy, dipecah menjadi beberapa tahapan, untuk menentukan build. Mereka juga tidak memiliki tindakan pasca-build, jadi kami menggunakan skrip pipeline itu sendiri untuk mengirim pesan Slack .

Cuplikan berikut mengirimkan pesan ke Slack dari pipeline Jenkins:

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

Sama seperti dengan penyiapan pekerjaan Jenkins tradisional, kita masih harus menentukan nama saluran dan nama kredensial yang akan digunakan.

Melalui pipeline Jenkins, kita juga dapat menggunakan berbagai fitur Slack tambahan, seperti upload file, utas pesan, dan lainnya.

Satu kelemahan menggunakan pipeline Jenkins adalah tidak adanya tombol uji. Untuk menguji integrasi dengan Slack, kita harus menjalankan seluruh pipeline.

Saat pertama kali menyiapkan semuanya, kita dapat membuat pipeline baru yang hanya berisi perintah Slack saat kita sedang mengerjakan semuanya.

6. Pertimbangan Tambahan

Sekarang setelah Jenkins dan Slack terhubung, ada beberapa pertimbangan tambahan.

Pertama, satu instance Jenkins dapat berkomunikasi dengan beberapa ruang kerja Slack . Yang harus kita lakukan adalah membuat aplikasi khusus dan menghasilkan token baru untuk setiap ruang kerja. Selama setiap token disimpan sebagai kredensial sendiri di Jenkins, tugas yang berbeda dapat diposting ke ruang kerja yang berbeda.

Sejalan dengan itu, pekerjaan Jenkins yang berbeda dapat memposting ke saluran Slack yang berbeda . Ini adalah pengaturan per pekerjaan dalam tindakan pasca-pembuatan yang kami konfigurasikan. Misalnya, pekerjaan yang terkait dengan pembuatan perangkat lunak dapat diposting ke saluran khusus pengembangan. Dan pekerjaan yang terkait dengan pengujian atau produksi dapat dialihkan ke saluran khusus mereka sendiri.

Terakhir, meskipun kita telah melihat salah satu plugin Slack yang lebih populer untuk Jenkins, yang memberikan kontrol halus atas apa yang akan dikirim, ada sejumlah plugin lain yang melayani tujuan berbeda. Misalnya, jika kita ingin setiap tugas Jenkins mengirim notifikasi yang sama, ada plugin Global Slack Notifier yang mungkin lebih cocok untuk ini.

7. Kesimpulan

Di artikel ini, kami telah melihat cara mengintegrasikan Jenkins dan Slack untuk mendapatkan umpan balik tentang pipeline CI / CD kami.

Dengan menggunakan plugin Jenkins, bersama dengan aplikasi Slack kustom, kami dapat mengirim pesan dari Jenkins ke Slack. Ini memungkinkan tim untuk mengetahui status pekerjaan Jenkins dan mengatasi masalah dengan lebih cepat.