Cấu hình Jenkins Pipeline tích hợp với Slack

Cấu hình Jenkins Pipeline tích hợp với SlackCuongquach.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.

tich-hop-jenkins-pipeline-voi-slack

Slack là gì ?

slack là gì
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 “(+)“.

tích hợp jenkins pipeline với slack - 1
tích hợp jenkins pipeline với slack – 1

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

tích hợp jenkins pipeline với slack - 2
tích hợp jenkins pipeline với slack – 2

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.

tích hợp jenkins pipeline với slack - 3
tích hợp jenkins pipeline với slack – 3

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‘.

tích hợp jenkins pipeline với slack - 4
tích hợp jenkins pipeline với slack – 4

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 :

tích hợp jenkins pipeline với slack - 5
tích hợp jenkins pipeline với slack – 5

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ích hợp jenkins pipeline với slack - 6
tích hợp jenkins pipeline với slack – 6

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

tích hợp jenkins pipeline với slack - 7
tích hợp jenkins pipeline với slack – 7

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

tích hợp jenkins pipeline với slack - 8
tích hợp jenkins pipeline với slack – 8

Giờ ta cấu hình thông tin TokenWebHook 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‘ .

tích hợp jenkins pipeline với slack - 9
tích hợp jenkins pipeline với slack – 9

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.

tích hợp jenkins pipeline với slack - 10
tích hợp jenkins pipeline với slack – 10

3. Cấu hình Jenkins pipeline để gửi thông báo lên Slack

Giờ ta thử code đoạn Jenkins pipeline để kiểm tra việc gửi thông báo bước đầu ok chưa nhé. Ở phần này do mình quen cú pháp ‘Scripted pipeline‘ nên sẽ dùng cú pháp này, các cách khai báo cấu hình một Jenkins pipeline mình cũng không đi chi tiết, coi như các bạn đã biết sử dụng.
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/

Previous articleMalware là gì ? Những điều bạn nên biết về Malware
Next articleCấu hình Prometheus giám sát dịch vụ Jenkins CI/CD
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !