Integrasi Jenkins Slack

1. Gambaran keseluruhan

Apabila pasukan kami bertanggungjawab untuk amalan DevOps, kami sering perlu memantau binaan dan pekerjaan automatik lain.

Dalam tutorial ini, kita akan melihat bagaimana mengkonfigurasi dua platform popular, Jenkins dan Slack, untuk bekerjasama dan memberitahu kita apa yang berlaku semasa saluran paip CI / CD kita berjalan.

2. Menyiapkan Slack

Mari mulakan dengan mengkonfigurasi Slack supaya Jenkins dapat menghantar mesej kepadanya. Untuk melakukan ini, kami akan membuat aplikasi Slack khusus, yang memerlukan akaun Pentadbir .

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

  • Lawati //api.slack.com
  • Log masuk ke ruang kerja yang dikehendaki
  • Klik Start Building butang
  • Namakan aplikasi Jenkins dan klik Buat Aplikasi
  • Klik pada OAuth & Permissions
  • Dalam Bot Token Skop seksyen, tambah bual: write skop
  • Klik Pasang App untuk Workspace butang
  • Klik butang Terima

Apabila ini selesai, kita akan melihat skrin ringkasan:

Sekarang, kita perlu memperhatikan token OAuth - kita akan memerlukannya kemudian ketika kita mengkonfigurasi Jenkins. Kita harus menganggapnya sebagai tauliah sensitif dan memastikannya selamat ..

Untuk menyelesaikan persediaan Slack, kita mesti menjemput pengguna Jenkins baru ke saluran yang kita mahu gunakan. Salah satu cara mudah untuk melakukannya adalah dengan menyebut pengguna baru dengan watak @ di dalam setiap saluran.

3. Menubuhkan Jenkins

Untuk menyediakan Jenkins, kami memerlukan akaun pentadbir .

Pertama, mari mulakan dengan masuk ke Jenkins dan menavigasi ke Manage Jenkins > Plugin Manager .

Kemudian, pada tab Tersedia , kami akan mencari Slack :

Mari pilih kotak pilihan untuk Slack Notification dan klik Install tanpa restart .

Sekarang, kita perlu mengkonfigurasi kelayakan baru. Mari pergi ke Jenkins> Kredensial> Sistem> Kredensial Global dan tambahkan kelayakan teks Rahsia baru :

Kami akan meletakkan token OAuth dari Slack ke medan Rahsia . Kita juga harus memberikan ID dan keterangan yang bermakna untuk memberikan bukti kelayakan ini untuk membantu kita mengenal pasti mereka dengan mudah kemudian. Kedai kelayakan Jenkins adalah tempat yang selamat untuk menyimpan token ini.

Sebaik sahaja kami menyimpan kelayakan, ada satu lagi konfigurasi global yang akan ditetapkan. Di bawah Jenkins> Kelola Jenkins> Konfigurasikan Sistem , kita perlu menyemak kotak pilihan pengguna bot Custom slack app di bawah bahagian Slack :

Sekarang setelah kita menyelesaikan penyiapan Jenkins, mari kita lihat bagaimana mengkonfigurasi pekerjaan dan saluran paip Jenkins untuk menghantar pesanan Slack.

4. Mengkonfigurasi Pekerjaan Jenkins Tradisional

Pekerjaan Jenkins tradisional biasanya melaksanakan satu atau lebih tindakan untuk mencapai tujuan mereka. Ini dikonfigurasi melalui antara muka pengguna Jenkins.

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

Mari pilih pekerjaan, atau buat yang baru. Apabila kita menurunkan menu Tambah tindakan pasca-bina , kita akan menemui Slack Notifications :

Setelah dipilih, terdapat banyak input yang tersedia untuk tindakan Slack Notification. Secara amnya, kebanyakan nilai lalai mencukupi. Walau bagaimanapun, terdapat beberapa maklumat yang diperlukan:

  • Fasa membina yang mana untuk menghantar mesej (permulaan, kejayaan, kegagalan, dll)
  • Nama kelayakan untuk digunakan - yang kami tambahkan sebelumnya
  • Nama saluran Slack atau ID ahli untuk menghantar mesej ke

Kami juga dapat menentukan bidang tambahan jika dikehendaki, seperti maklumat komitmen yang digunakan untuk pekerjaan Jenkins, pesanan khusus, ikon bot khusus, dan banyak lagi:

Semasa mengatur sesuatu melalui UI, kita dapat menggunakan butang Uji Sambungan untuk memastikan bahawa Jenkins dapat mencapai Slack. Sekiranya berjaya, kita akan melihat mesej ujian di saluran Slack dari pengguna Jenkins:

Sekiranya mesej tidak muncul, fail log Jenkins berguna untuk menyelesaikan masalah. Secara amnya, kita perlu memeriksa semula bahawa tindakan pasca-binaan mempunyai semua bidang yang diperlukan , bahawa token OAuth disalin dengan betul, dan bahawa token itu diberi ruang lingkup yang tepat ketika kita mengkonfigurasi Slack.

5. Mengkonfigurasi Saluran Paip Jenkins

Paip Jenkins berbeza dari pekerjaan tradisional. Mereka menggunakan skrip Groovy tunggal, dipecah menjadi beberapa tahap, untuk menentukan build. Mereka juga tidak mempunyai tindakan pasca-membangun, jadi kami menggunakan skrip saluran paip itu sendiri untuk mengirim pesan Slack .

Coretan berikut menghantar mesej ke Slack dari saluran paip Jenkins:

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

Sama seperti persediaan pekerjaan Jenkins tradisional, kita masih harus menentukan nama saluran dan nama kelayakan yang akan digunakan.

Melalui saluran paip Jenkins, kami juga dapat menggunakan pelbagai fitur Slack tambahan, seperti muat naik fail, utas mesej, dan banyak lagi.

Satu kelemahan untuk menggunakan saluran paip Jenkins adalah bahawa tidak ada butang ujian. Untuk menguji integrasi dengan Slack, kita harus melaksanakan keseluruhan saluran paip.

Semasa mula-mula mengatur sesuatu, kita dapat membuat saluran paip baru yang hanya berisi perintah Slack sementara kita membuat semuanya berfungsi.

6. Pertimbangan Tambahan

Sekarang setelah kita menghubungkan Jenkins dan Slack, ada beberapa pertimbangan tambahan.

Pertama, satu contoh Jenkins dapat berkomunikasi dengan beberapa ruang kerja Slack . Yang harus kita buat hanyalah membuat aplikasi khusus dan menghasilkan token baru untuk setiap ruang kerja. Selagi setiap token disimpan sebagai bukti kelayakannya sendiri di Jenkins, tugas yang berbeza boleh dihantar ke tempat kerja yang berbeza.

Di sepanjang garis yang sama, pekerjaan Jenkins yang berbeza boleh menghantar ke saluran Slack yang berbeza . Ini adalah tetapan setiap pekerjaan dalam tindakan pasca-bangunan yang kita konfigurasikan. Sebagai contoh, pekerjaan yang berkaitan dengan pembangunan perisian boleh dihantar ke saluran pengembangan sahaja. Dan pekerjaan yang berkaitan dengan ujian atau pengeluaran boleh masuk ke saluran khusus mereka.

Akhirnya, semasa kami melihat salah satu pemalam Slack yang lebih popular untuk Jenkins, yang memberikan kawalan butiran halus terhadap apa yang hendak dihantar, terdapat sebilangan pemalam lain yang melayani tujuan yang berbeza. Sebagai contoh, jika kita ingin setiap pekerjaan Jenkins mengirim pemberitahuan yang sama, ada plugin Global Slack Notifier yang mungkin lebih sesuai untuk ini.

7. Kesimpulannya

Dalam artikel ini, kami telah melihat bagaimana menggabungkan Jenkins dan Slack untuk mendapatkan maklum balas mengenai saluran paip CI / CD kami.

Menggunakan plugin Jenkins, bersama dengan aplikasi Slack khusus, kami dapat mengirim mesej dari Jenkins ke Slack. Ini membolehkan pasukan memperhatikan status pekerjaan Jenkins dan menangani masalah dengan lebih cepat.