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

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

ส่งข้อความแจ้งเตือนสถานะ build ไปยังผู้ใช้หรือกลุ่ม LINE ผ่าน LINE Messaging API

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

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

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

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

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

เหมาะสำหรับทีมที่ประสานงานผ่าน LINE โดยสามารถกำหนดค่า STATUS: failure ในขั้นตอนที่ทำงานเฉพาะเมื่อ pipeline เกิดข้อผิดพลาด เพื่อแจ้งเตือนเหตุขัดข้องได้อย่างทันท่วงที

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

พารามิเตอร์ชนิดค่าเริ่มต้นจำเป็นคำอธิบาย
LINE_CHANNEL_ACCESS_TOKENstring—ใช่Channel access token ของ LINE Messaging API
LINE_USER_IDstring""ไม่User ID ภายในระบบ LINE สำหรับส่งข้อความส่วนตัว (ห้ามใช้ร่วมกับ LINE_GROUP_ID)
LINE_GROUP_IDstring""ไม่Group ID ของกลุ่ม LINE สำหรับส่งข้อความเข้ากลุ่ม (ห้ามใช้ร่วมกับ LINE_USER_ID)
MESSAGEstring—ใช่ข้อความที่ต้องการส่งแจ้งเตือน
STATUSenum: success, failure, infosuccessไม่สถานะของ build สำหรับแสดงผลในข้อความ เช่น success, failure หรือ info
BUILD_URLstring""ไม่URL ลิงก์ตรงไปยังหน้าของ build ที่ต้องการแนบไปกับข้อความ

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

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

ผลลัพธ์ (Results)​

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

การทำงาน​

เรียกใช้งาน LINE Messaging API push endpoint ด้วย LINE_CHANNEL_ACCESS_TOKEN พร้อมแสดงอีโมจิระบุสถานะตาม STATUS และแนบลิงก์ BUILD_URL เพื่อให้กดเข้าไปดูรายละเอียดได้ โดยสามารถระบุ LINE_USER_ID สำหรับส่งถึงบุคคล หรือระบุ LINE_GROUP_ID สำหรับส่งเข้ากลุ่ม (ต้องเลือกอย่างใดอย่างหนึ่ง)

ตัวอย่าง​

แจ้งเตือนผู้ใช้งานเมื่อ build สำเร็จ​

steps:
- name: notify
uses: loha/notify-line@v1
with:
LINE_CHANNEL_ACCESS_TOKEN: '$(secrets.LINE_TOKEN)'
LINE_USER_ID: '$(secrets.LINE_USER_ID)'
MESSAGE: 'Build succeeded for $(context.pipelineRun.name)'
STATUS: 'success'
BUILD_URL: 'https://dashboard.loha.cloud/builds/$(context.pipelineRun.name)'

ส่งข้อความแจ้งเตือนเข้ากลุ่มงาน​

steps:
- name: notify-failure
uses: loha/notify-line@v1
with:
LINE_CHANNEL_ACCESS_TOKEN: '$(secrets.LINE_TOKEN)'
LINE_GROUP_ID: '$(secrets.LINE_GROUP_ID)'
MESSAGE: 'Build failed. Please check the logs.'
STATUS: 'failure'

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

ปัญหา: API ส่งคืนสถานะ HTTP 401

วิธีแก้: ตรวจสอบว่า LINE_CHANNEL_ACCESS_TOKEN เป็น channel access token จาก LINE Messaging API จริงๆ (ไม่ใช่ token จากระบบเดิมของ LINE Notify)


ปัญหา: API ส่งคืน HTTP 400 แจ้งว่า property to ไม่ถูกต้อง

วิธีแก้: ตรวจสอบว่า LINE_USER_ID เป็นรหัสประจำตัวของ LINE (ขึ้นต้นด้วยตัว U...) ไม่ใช่ชื่อที่แสดง (Display Name) และผู้ใช้จะต้องกดเพิ่มบอทเป็นเพื่อนก่อนจึงจะรับข้อความได้