ข้ามไปยังเนื้อหาหลัก

Notify Webhook (ส่งการแจ้งเตือนผ่าน Webhook)

ส่งการแจ้งเตือนไปยัง Slack, Discord, Microsoft Teams หรือปลายทาง Webhook อื่นๆ

การอ้างอิง (Reference): loha/notify-webhook@v1

หมวดหมู่: Deploy (การส่งมอบและติดตั้ง)

รันไทม์ (Runtime): curlimages/curl:8.5.0 (รันแบบ non-root, ตรึงด้วย digest)

สัญญาอนุญาต (License): Apache-2.0

ควรใช้เมื่อ​

ใช้สำหรับระบบ ChatOps หรือปลายทางที่รองรับการรับข้อมูลในรูปแบบ JSON โดยสามารถเลือก WEBHOOK_FORMAT ให้เข้ากับแพลตฟอร์มปลายทางที่ใช้งาน

พารามิเตอร์​

พารามิเตอร์ชนิดค่าเริ่มต้นจำเป็นคำอธิบาย
WEBHOOK_URLstring—ใช่Webhook URL ของ Slack, Discord, Microsoft Teams หรือปลายทางที่รองรับ
MESSAGEstring—ใช่ข้อความที่ต้องการส่งแจ้งเตือน
STATUSenum: success, failure, infosuccessไม่สถานะของ build สำหรับแสดงผลในข้อความ เช่น success, failure หรือ info
TITLEstringPipeline Notificationไม่หัวข้อของการแจ้งเตือนที่จะแสดงใน attachment หรือ embed card
COLORstring#36a64fไม่รหัสสีสำหรับแถบข้อความแจ้งเตือน (attachment หรือ embed)
WEBHOOK_FORMATenum: slack, discord, teams, rawslackไม่รูปแบบ payload ของ webhook ได้แก่ slack, discord, teams หรือ raw

พื้นที่ทำงาน (Workspaces)​

task นี้ไม่ต้องใช้ workspace และเรียกใช้งานภายนอก (outbound call) เท่านั้น

ผลลัพธ์ (Results)​

ผลลัพธ์ (Result)คำอธิบาย
NOTIFY_RESULTผลลัพธ์การส่งข้อความแจ้งเตือน (SUCCESS หรือ FAILED)
HTTP_STATUSรหัส HTTP response status จากปลายทาง webhook

การทำงาน​

ส่งคำขอแบบ HTTP POST ไปยัง WEBHOOK_URL พร้อมจัดโครงสร้าง JSON ตาม WEBHOOK_FORMAT ที่เลือก: ตัวเลือก slack จะจัดรูปแบบเป็น attachment, discord จะจัดรูปแบบเป็น embed card, teams จะใช้รูปแบบ Office 365 connector card และ raw จะส่งข้อความใน MESSAGE ตามที่ระบุโดยตรง โดยรหัสสถานะตอบกลับจะถูกเก็บไว้ใน HTTP_STATUS

ตัวอย่าง​

ส่งแจ้งเตือนเข้า Slack เมื่อ build สำเร็จ​

steps:
- name: notify-slack
uses: loha/notify-webhook@v1
with:
WEBHOOK_URL: '$(secrets.SLACK_WEBHOOK_URL)'
MESSAGE: 'Build $(context.pipelineRun.name) completed successfully'
STATUS: 'success'
TITLE: 'Pipeline Build'
WEBHOOK_FORMAT: 'slack'

ส่งแจ้งเตือนเข้าช่อง Discord​

steps:
- name: notify-discord
uses: loha/notify-webhook@v1
with:
WEBHOOK_URL: '$(secrets.DISCORD_WEBHOOK_URL)'
MESSAGE: 'Build failed! Check the pipeline logs.'
STATUS: 'failure'
WEBHOOK_FORMAT: 'discord'

การแก้ปัญหา​

ปัญหา: ปลายทาง Slack ตอบกลับด้วยข้อผิดพลาด HTTP 400

วิธีแก้: ตรวจสอบว่าใช้ URL แบบ Incoming Webhook (https://hooks.slack.com/services/...) และตั้งค่า WEBHOOK_FORMAT: slack ให้ตรงกับโครงสร้าง payload


ปัญหา: Discord ตอบกลับด้วย HTTP 204 แต่ข้อความไม่แสดงในห้องแชต

วิธีแก้: รหัส 204 แสดงว่า Discord ได้รับข้อมูลเรียบร้อยแล้ว หากข้อความยังไม่แสดง ให้ตรวจสอบสิทธิ์ Send Messages ของ webhook หรือบอทในห้องสนทนาปลายทาง