[CI&CD] Gửi email trong jenkins

Chào các bạn.

Ở các bài hướng dẫn trước mình đã hướng dẫn các bạn build source và sử dụng trigger để build tự động 1 job jenkins rồi ở bài hôm nay mình sẽ hướng dẫn các bạn cách config email để có thể gửi mail report mỗi lần chạy job.

Để gửi được mail ở jenkins thì chúng ta phải kết nối jenkins tới  1 mail server  ở bài hướng dẫn này mình sẽ dùng trình gửi mail của gmail.com qua giao thức SMTP mà google cung cấp cho chúng ta.

Vì ip của mình bị google chặn nên mình không thể sử dụng SMTP của google trên localhost trên máy của mình như các bài hướng dẫn trước. Nên mình đã deploy trộm con jenkins của những bài hướng dẫn trước lên cloud để làm demo hướng dẫn trong bài này mong các bạn thông cảm :))

Đầu tiên để sử dụng SMTP để send mail trên jenkins bạn bật tính năng login bằng app trên gmail của mình bằng cách truy cập https://myaccount.google.com/security  và bật lên như hình

 

Tiếp ta mở jenkins vào  Manage Jenkins -> Configure System tìm mục E-mail Notification và điền email + password gmail của bạn vào  cùng smtp server  như hình

kích chọn Test configuration by sending test e-mail để test thử xem thông chưa nếu được như hình dưới là thành công

Lúc này ta check mail sẽ thấy có mail test gửi về

ok vậy là test kết nối xong bây giờ chúng ta sẽ config Extended E-mail Notification tương tự như E-mail Notification để dùng cho toàn hệ thống jenkins ta config như hình

 

 

Vậy là xong bây giờ chúng ta save thay đổi lại và trở lại job jenkins mà chúng ta đã tạo ở bà i  Làm quen với CI&CD phần 1 build source với jenkins  như bài trước mình mới chỉ có get source và buid chưa có làm gì cả vậy giờ mình sẽ thêm report gửi về mail

Đầu tiên để gửi được email trước hết chúng ta cần tạo vào 1 function send mail cái đã giờ mình sẽ generate script tạm một đoạn code send mail bằng cách click vào Pipeline Syntax.

 

Sau đó chọn chọn sample Emailext Extensded Email 

Sau khi điền đầy đủ mọi thứ mình được template send mail như sau

Ở đây mình không thể gửi một nội dung và tiêu đề cứng nhắc được mà phải report đầy đủ tình trạng chạy job, rất may jenkins cung cấp cho ta một số biến môi trường để có thể get ra thông tin của job đang chạy như tình trạng build, url các thứ mình sẽ sửa lại đoạn code và viết thành 1 function gửi mail như sau các bạn cứ copy dùng nhé.

// start function send email
def sendMailReport()
{
emailext body: “””Hi team
please have a look the build status below:
Project: devtayto.com
Build Status: ${currentBuild.currentResult} // get status build 
Build URL: ${env.BUILD_URL} // get url job jenkins 

if you have issue please contact email admin@devtayto.com

thank
Devops team
“””, subject: “Build job jenkins report result status ${currentBuild.currentResult}”, to: ‘admin@devtayto.com;devtayto.com@gmail.com’

}
//end

 

bây giờ chúng ta sẽ thêm vào đoạn code pipeline hôm trước và gọi nó ra ở cuối khi job chạy hoàn thành đầy đủ sẽ như sau.

 

// start function send email
def sendMailReport()
{
emailext body: “””Hi team
please have a look the build status below:
Project: devtayto.com
Build Status: ${currentBuild.currentResult}
Build URL: ${env.BUILD_URL}

if you have issue please contact email admin@devtayto.com

thank
Devops team
“””, subject: “Build job jenkins report result status ${currentBuild.currentResult}”, to: ‘admin@devtayto.com;devtayto.com@gmail.com’

}
//end
node {
def mvnHome
stage(‘Preparation’) {
git ‘https://github.com/devtayto/RestApiSpringBoot.git’
mvnHome = tool ‘maven_devtayto.com’
}
stage(‘Build’) {
if (isUnix()) {
sh “‘${mvnHome}/bin/mvn’ -Dmaven.test.failure.ignore clean package”
} else {
bat ‘mvn clean install’
}
}
sendMailReport()

}

ok bây giờ save lại và chạy thử ta được

check mail ta sẽ thấy mail report được gửi về

Vậy là xong các config email report trong jenkins cảm ơn các bạn đã đọc bài

Chúc các bạn thành công.!