Gitlab Notification with Line แจ้งเตือนบน Line

สวัสดีครับ ปกติเราคงคุ้นกับ Line กันอยู่แล้ว และส่วนใหญ่ก็คงใช้ Slack คู่กันไปด้วย ทีนี้เวลา Gitlab มี event เช่น push code git pushหลายท่านที่ใช้ Slack ก็จะเจอ Notification แบบนี้

และทีมส่วนใหญ่ก็คิดว่า Line เป็นช่องทางนึงที่สะดวกเช่นกัน งั้นเราก็ทำให้ Line มี Notification จาก Gitlab event กันเถอะ

Line Notifications

Step ง่ายแสนง่าย

  1. สมัคร Line Developer ที่ https://notify-bot.line.me/en/
  2. สร้าง Token
  3. Service สำหรับรับ-ส่ง message
  4. Gitlab Settings => Integrations => Webhooks

Line

สมัคร Line Developer เสร็จแล้ว ให้ทำการ Login https://notify-bot.line.me/my/ จากนั้นเราจะสร้าง Access Token เอาไว้ใช้งานกัน

Connected services

ใส่ชื่อ Token และเลือก Group line สำหรับให้ Notification แจ้งเตือนในห้องนั้น ๆ

หลังจากสร้าง Token จะเห็น Connected service ที่สร้างไป

สร้าง Token เรียบร้อยแล้วให้เก็บ Token ไว้ จากนั้น Add friend “LINE Notify และ invited “LINE Notifyเข้ากลุ่ม

สามารถอ่าน LINE Notify API Document เพิ่มเติมได้ที่ https://notify-bot.line.me/doc/en/

Service

เป็นตัวรับ event จาก Gitlab และทำการส่งไปยัง Line notification

Code ตัวอย่างนี้ตอนแรกจะเขียนด้วย Go แต่พอดีต้องมีโปรเจค Software package ซึ่งเป็น PHP ก็เลยถือโอกาสเขียนซักหน่อย เนื่องจากห่างไปนานมาก

  1. โคลน project git clone git@github.com:Pitchanon/Gitlab-Notify-Line.git
  2. พอได้ code ลงมาแล้วก็เข้าไปที่ cd servicepath ที่มี composer.json
  3. สั่ง composer install
  4. จากนั้น docker-compose up -dรัน service ขึ้นมา จะได้ service PHP ที่เป็นตัวรับและส่งข้อความ notification
PHP

ตัวอย่าง Code โดย service นี้จะทำหน้าที่คอยรับข้อมูล event ที่เป็น json จากนั้นก็ส่ง message ไป Line notification เป็นอันจบ

Gitlab

เพิ่ม URL Service โดยเข้าไปที่ Settings => Integrations ใส่ webhook URL ในตัวอย่างคือ http://php/ (URL ของ service PHP ที่เรา deploy ไว้)

ในส่วนนี้สามารถลอง Setting ได้ครับว่าจะใช้งานแบบไหน event ใดบ้าง

สามารถรัน Test ดูได้

Test

หรือจะลองผ่าน curl, Postman ก็ได้โดยการนำ json ของ gitlab ทดสอบยิงเข้ามา

Document Gitlab integration สามารถดูเพิ่มเติมได้ที่ https://docs.gitlab.com/ce/user/project/integrations/webhooks.html#events http://gitlab.localhost/help/system_hooks/system_hooks
Curl

เราก็จะได้ผลลัพธ์ดังภาพ