ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การแจ้งเตือน Build Status: Email Notifications

บทความนี้อธิบายวิธีการตั้งค่าให้ Jenkins ส่ง Email แจ้งเตือนเมื่อ Build สำเร็จหรือล้มเหลว โดยต้องติดตั้ง Email Extension Plugin และตั้งค่าทั้ง Global Email Conf...

การแจ้งเตือน Build Status: Email Notifications

ในบทที่แล้ว เราได้เรียนรู้วิธีการสร้าง Jenkins Job เพื่อ Build โปรเจกต์ PHP และรัน Unit Tests โดยอัตโนมัติ หากมี Test ไม่ผ่าน Jenkins จะแจ้งให้ทราบโดยการ Mark Build เป็น "FAILURE" แต่เราจะรู้ได้อย่างไรว่า Build สำเร็จหรือล้มเหลว ถ้าเราไม่ได้เฝ้าดู Jenkins ตลอดเวลา?

คำตอบคือ การตั้งค่าให้ Jenkins ส่ง Email แจ้งเตือนเมื่อ Build สำเร็จหรือล้มเหลว! ในบทนี้ เราจะมาเรียนรู้วิธีการติดตั้ง Email Extension Plugin และตั้งค่า Email Notifications เพื่อให้เราได้รับการแจ้งเตือนเมื่อมีอะไรเกิดขึ้นกับ Build ของเรา

การติดตั้ง Email Extension Plugin

Jenkins ไม่ได้มีระบบ Email Notifications ในตัว ดังนั้นเราต้องติดตั้ง Plugin เพิ่มเติมที่ชื่อว่า "Email Extension Plugin" Plugin นี้จะช่วยให้เราสามารถส่ง Email ได้อย่างยืดหยุ่นและมีประสิทธิภาพ

วิธีการติดตั้ง Email Extension Plugin:

  1. ไปที่ Jenkins Dashboard
  2. คลิก "Manage Jenkins"
  3. คลิก "Manage Plugins"
  4. ไปที่ Tab "Available"
  5. ค้นหา "Email Extension Plugin"
  6. เลือก "Email Extension Plugin" และคลิก "Install without restart" (หรือ "Download now and install after restart")

หลังจากติดตั้ง Plugin เสร็จสิ้น อาจจะต้อง Restart Jenkins เพื่อให้ Plugin ทำงานได้อย่างสมบูรณ์

การตั้งค่า Email Notifications

เมื่อติดตั้ง Email Extension Plugin เรียบร้อยแล้ว เราก็สามารถเริ่มตั้งค่า Email Notifications ได้ โดยมีสองส่วนหลักๆ ที่เราต้องตั้งค่า:

  1. Global Email Configuration: ตั้งค่า Server สำหรับส่ง Email (SMTP Server)
  2. Job-Specific Email Configuration: ตั้งค่าว่าเมื่อไหร่และใครที่จะได้รับการแจ้งเตือนสำหรับแต่ละ Job

Global Email Configuration

Global Email Configuration เป็นการตั้งค่า Server ที่ Jenkins จะใช้ในการส่ง Email เราต้องระบุ SMTP Server, Username, Password และอื่นๆ

วิธีการตั้งค่า Global Email Configuration:

  1. ไปที่ Jenkins Dashboard
  2. คลิก "Manage Jenkins"
  3. คลิก "Configure System"
  4. เลื่อนลงมาที่ Section "Email Extension"
  5. กรอกรายละเอียดดังนี้:

    • SMTP server: ระบุ SMTP Server ของคุณ (เช่น smtp.gmail.com)
    • SMTP port: ระบุ Port ของ SMTP Server (เช่น 587 สำหรับ TLS หรือ 465 สำหรับ SSL)
    • Use SMTP Authentication: เลือกถ้า SMTP Server ต้องการ Authentication
    • Username: ระบุ Username สำหรับ SMTP Authentication
    • Password: ระบุ Password สำหรับ SMTP Authentication
    • Use SSL: เลือกถ้า SMTP Server ต้องการ SSL
    • Use TLS: เลือกถ้า SMTP Server ต้องการ TLS
    • Default Recipients: (Optional) ระบุ Email address ที่จะได้รับ Email โดย Default
    • Default Subject: (Optional) ระบุ Subject ของ Email โดย Default
    • Default Content: (Optional) ระบุ Content ของ Email โดย Default
  6. คลิก "Save"

ข้อควรระวัง: การใช้ Gmail SMTP Server อาจจะต้องเปิด "Less secure app access" ใน Google Account Settings หรือใช้ "App Password" แทน Password จริง (แนะนำให้ใช้ App Password เพื่อความปลอดภัย)

Job-Specific Email Configuration

Job-Specific Email Configuration เป็นการตั้งค่าว่าเมื่อไหร่และใครที่จะได้รับการแจ้งเตือนสำหรับแต่ละ Jenkins Job เราสามารถตั้งค่าให้ส่ง Email เมื่อ Build สำเร็จ, ล้มเหลว, ไม่เสถียร (Unstable) หรืออื่นๆ

วิธีการตั้งค่า Job-Specific Email Configuration:

  1. ไปที่ Jenkins Dashboard
  2. เลือก Job ที่ต้องการตั้งค่า Email Notifications
  3. คลิก "Configure"
  4. เลื่อนลงมาที่ Section "Post-build Actions"
  5. คลิก "Add post-build action"
  6. เลือก "Editable Email Notification"
  7. กรอกรายละเอียดดังนี้:

    • Project Recipient List: ระบุ Email address ที่จะได้รับ Email สำหรับ Job นี้ (สามารถระบุหลาย Email address ได้โดยคั่นด้วย comma)
    • Content Type: เลือก Content Type ของ Email (Text/HTML)
    • Default Subject: ระบุ Subject ของ Email (สามารถใช้ Variables ได้)
    • Default Content: ระบุ Content ของ Email (สามารถใช้ Variables ได้)
    • Triggers: เลือก Triggers ที่จะทำให้ส่ง Email (เช่น "Success", "Failure", "Unstable")
  8. คลิก "Advanced Settings..." เพื่อดู Options เพิ่มเติม เช่น การตั้งค่า Recipients สำหรับแต่ละ Trigger
  9. คลิก "Save"

Variables ที่ใช้ได้ใน Subject และ Content: Email Extension Plugin มี Variables มากมายที่เราสามารถใช้ใน Subject และ Content ของ Email เพื่อให้ข้อมูลเกี่ยวกับ Build เช่น:

  • `${BUILD_STATUS}`: สถานะของ Build (SUCCESS, FAILURE, UNSTABLE)
  • `${BUILD_NUMBER}`: หมายเลข Build
  • `${BUILD_URL}`: URL ของ Build
  • `${PROJECT_NAME}`: ชื่อ Project
  • `${JOB_NAME}`: ชื่อ Job
  • `${CHANGES}`: รายการ Changes ที่เกิดขึ้นใน Build นี้

ตัวอย่าง Subject: `[${PROJECT_NAME}] Build #${BUILD_NUMBER} is ${BUILD_STATUS}`

ตัวอย่าง Content:

<html>
<body>
  <h1>Jenkins Build Notification</h1>
  <p>Project: ${PROJECT_NAME}</p>
  <p>Build Number: ${BUILD_NUMBER}</p>
  <p>Build Status: ${BUILD_STATUS}</p>
  <p>Build URL: <a href="${BUILD_URL}">${BUILD_URL}</a></p>
  <p>Changes:</p>
  <pre>${CHANGES}</pre>
</body>
</html>

การทดสอบ Email Notifications

หลังจากตั้งค่า Email Notifications เรียบร้อยแล้ว เราควรทดสอบว่า Email ถูกส่งอย่างถูกต้องหรือไม่ มีหลายวิธีในการทดสอบ:

  1. Trigger Build: ทำการ Trigger Build ด้วยตนเอง (คลิก "Build Now") และดูว่า Email ถูกส่งหรือไม่
  2. Simulate Failure: จงใจทำให้ Build ล้มเหลว (เช่น แก้ไข Test Case ให้ Fail) และดูว่า Email แจ้งเตือนความล้มเหลวถูกส่งหรือไม่
  3. ใช้ "Test configuration" ใน Global Email Configuration: ในหน้า "Configure System" ในส่วน "Email Extension" จะมีปุ่ม "Test configuration" ให้ลองส่ง Email ไปยัง Email Address ที่ระบุ

ถ้า Email ไม่ถูกส่ง ตรวจสอบ Log ของ Jenkins เพื่อดูว่ามี Error อะไรเกิดขึ้นหรือไม่ อาจจะต้องตรวจสอบ SMTP Server Settings, Username/Password, และ Firewall Settings

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการติดตั้ง Email Extension Plugin และตั้งค่า Email Notifications ใน Jenkins เพื่อให้เราได้รับการแจ้งเตือนเมื่อ Build สำเร็จหรือล้มเหลว การตั้งค่า Email Notifications เป็นสิ่งสำคัญในการทำ CI/CD เพราะจะช่วยให้เราทราบถึงสถานะของ Build ได้อย่างรวดเร็วและสามารถแก้ไขปัญหาได้ทันท่วงที

ในบทถัดไป เราจะเรียนรู้วิธีการใช้ Git Hooks เพื่อ Trigger Jenkins Build โดยอัตโนมัติเมื่อมีการ Push Code ไปยัง Repository

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์