Cấu hình Jenkins Pipeline tích hợp với Slack – Cuongquach.com | Chào các bạn, nếu bạn đã ấn vào đọc bài viết này hẳn bạn đã làm quen với hệ thống Jenkins CI/CD và cách thức khai báo cấu hình một Jenkins pipeline với cú pháp Jenkinsfile rồi nhỉ. Bài viết sẽ không đi chi tiết vào việc Jenkins pipeline là gì và cấu hình như thế nào. Chúng ta sẽ tìm hiểu một nội dung khác về cách tích hợp Jenkins pipeline gửi thông điệp thông báo khi build một job thành công hay thất bại lên ứng dụng chat Slack vô cùng nổi tiếng của giới IT.
Contents
Slack là gì ?

Có thể tưởng tượng Slack là một “phòng chat” cho toàn bộ nhân viên trong công ty của bạn.
Slack được nhiều người xem là “sát thủ email”, ứng dụng là cách để “giảm bớt” các email nội bộ của bạn, và hãy quên việc giao tiếp, trao đổi bằng email hoặc các phần mềm chat thông thường đi.
Ưu điểm lớn nhất của Slack là đa nền tảng (máy tính, Android, iOS) nên tất cả mọi người trong công ty của bạn có thể chat nhóm với nhau bất kể họ dùng thiết bị gì đi nữa.
Bạn có thể đăng ký tài khoản và tìm hiểu thêm về slack : https://slack.com/intl/en-vn/
1. Tạo Slack channel để nhận thông báo từ Jenkins
Để Jenkins có thể gởi thông báo tới kênh Slack channel của bạn, bạn cần cài đặt Jenkins app trên Slack và tạo một channel cho việc nhận thông báo từ Jenkins CI/CD.
Bạn vào ứng dụng Slack, chọn nút “(+)“.

Search “Jenkins” và chọn cài đặt (Install).

Lúc này Slack sẽ chuyển hướng bạn đến trang chủ cài đặt ứng dụng Jenkins trong group Slack của bạn.

Bạn chọn channel đang có bằng cách gõ tên channel trên Slack mà bạn muốn nhận thông báo từ Jenkins. Hoặc bạn có thể tạo channel mới với ‘Create a new channel‘.

Kế đến bạn sẽ được Slack chuyển sang trang hướng dẫn cấu hình Jenkins tích hợp với Slack. Bạn cần lưu ý thông tin như dưới, trong trang hướng dẫn, sẽ có thông tin về URL Webhook cho Group Slack của bạn và Token :

2. Cấu hình Jenkins tích hợp Slack
Bạn vào trang quản lý plugin trong Jenkins : “Manage Jenkins” > “Manage Plugins” . (Xem thêm: QUản lý Jenkins plugin cơ bản)

Tìm kiếm tên plugin “Slack Notification” trong tab “Available” và chọn “Install” để cài đặt như bao plugin khác.

Bạn cần tạo một thông tin key ‘Credentials‘ dưới dạng ‘Secret Text‘ trong Jenkins, để chọn ở phần ‘Integration Toke Credentials‘. Ví dụ mình đặt tên là : slack.jenkins.xxx

Giờ ta cấu hình thông tin Token và WebHook Slack group chúng ta trong Jenkins nào. Bạn vào : “Manage Jenkins” > “Configure System”. Tìm mục ‘Global Slack Notifier Settings‘ và điền thông tin ‘BaseURL‘ và ‘Integration Token Credentials‘ với thông tin ‘slack.jenkins.xxx‘ .

Lúc này bạn chọn “Test Connection” , sẽ thấy kết một thông báo mang tính chất kiểm tra hoạt động gửi thông tin lên Webhook Channel Slack . Nếu như trong hình là bạn đã thành công bước đầu rồi đấy.

3. Cấu hình Jenkins pipeline để gửi thông báo lên Slack
node { echo "Testing guy !" notifyBuild('SUCCESSFUL') } def notifyBuild(String buildStatus = 'STARTED') { // build status of null means successful buildStatus = buildStatus ?: 'SUCCESSFUL' // Default values def colorName = 'RED' def colorCode = '#FF0000' def now = new Date() String timedate = now.format("YYYY-MM-DD HH:mm:ss.Ms") def msg_details = """${buildStatus}: Job '${env.JOB_NAME}' [${env.BUILD_NUMBER}] Job Name: ${env.JOB_NAME} Build: ${env.BUILD_NUMBER} Check console output this build at: ${env.BUILD_URL} """ // Override default values based on build status if (buildStatus == 'STARTED') { color = 'YELLOW' colorCode = '#FFFF00' } else if (buildStatus == 'SUCCESSFUL') { color = 'GREEN' colorCode = '#00FF00' } else { color = 'RED' colorCode = '#FF0000' } // Send notifications slackSend (color: colorCode, message: msg_details) }
Chú thích:
- Hàm ‘notifyBuild‘ sẽ thực hiện việc gửi thông điệp lên Slack Channel của bạn với cú pháp ‘slackSend‘.
- Do Slack plugin này có hỗ trợ màu sắc nên ta có thể cấu hình để hiển thị màu xanh lá cho việc thực thi job thành công chẳng hạn, màu đỏ thể hiện thất bại.
Khi bạn thử nghiệm chạy build job Jenkins pipeline này , sẽ thấy thông báo trên slack như dưới.
Đơn giản vài bước giúp bạn có thể tự cấu hình Jenkins pipeline tích hợp với ứng dụng chat Slack. Chúc các bạn thành công.
Nguồn: https://cuongquach.com/