kiến thức DevOps thực tế và chi tiết

Tích hợp gửi thông báo Gitlab CI/CD đến Telegram 2 phút hơn

Việc quản lý quy trình CI/CD chạy tốt  là trách nhiệm và niềm vui của DevOps Engineer (cá nhân hơn là mình hề hề), tuy nhiên là chúng ta không thể nào ngồi kè kè để canh xem các pipeline vì có những dự án vài chục repository và vì vậy rất nhiều pipeline, có rất nhiều cách để giúp loại bỏ cái công việc thủ công đó nhưng đơn giản là hữu ích không thể bỏ qua là gửi thông báo từ trạng thái của các pipeline và cũng có rất là nhiều cách, bạn và mình giải lao 2 phút tích hợp gửi thông báo Gitlab CI/CD đến Telegram để xem có gì hay ho với các cách gửi thông báo khác không nhé.

Tích hợp gửi thông báo Gitlab CI/CD đến Telegram

Tình huống là chúng ta có một dự án đang cấu hình gitlab pipeline và đang cần thiết lập stage gửi thông báo Gitlab CI/CD đến Telegram khi việc build thất bại

Step 1: Tạo mới chat với BotFather

Trên thanh tìm kiếm Telegram nhập botfather (có tích xanh uy tín)

Chọn start để bắt đầu

Chat chữ /start sẽ hiện ra những thông tin và hướng dẫn cho chúng ta

Làm theo các bước sau:

  • /newbot để tiến hành khởi tạo bot
  • Nhập tên của bot (ví dụ: Gitlab Pipeline Notification)
  • Nhập Username cho bot (ví dụ: gitlab_check_bot)

Sau khi thành công bạn sẽ có:

  • Link để chuyển tới cuộc hội thoại của bot
  • Token bạn hãy lưu lại để sau sử dụng trong stage Gitlab CI

Step 2: Cấu hình Telegram Bot

Khi chọn vào link t.me/gitlab_check_bot và nhấn start để bắt đầu với bot

Bạn hãy chat gì đó nhé để có thể lấy được chat id

Truy cập vào link : https://api.telegram.org/bot<Token>/getUpdates và lưu lại Chat ID để sử dụng trong Gitlab CI

Step 3: Cấu hình gửi thông báo Gitlab CI/CD

Trong dự án Gitlab của bạn chọn Settings => CI/CD => Add Variable và thêm 2 biến TOKEN_BOTFATHER vừa lưu ở trên

Thêm biến CHAT_ID vừa lưu ở trên

 

Đây là một dự án sample đơn giản về Vue trên Github mình clone về và Dockerize nó, tương tự dự án của bạn bạn chỉ cần thêm một số thông tin như dưới đây:

  • Mình thiết lập stage build để khi build lỗi thì sẽ gửi thông báo về Telegram.
  • Job build_check là một bước build dự án bình thường với docker và lưu thông tin log vào file build.log
  • Job build_noti sẽ gửi thông báo với những cấu hình:
    • Thông tin dự án: ID, Name, URL, Branch commit, SHA commit
    • Gửi message với điều kiện khi tìm thấy ERROR trong file build.log

Bạn có thể tham khảo sample: GitHub – Jamie-Yang/vue3-boilerplate

Và dockerize dự án tham khảo 2 file nginx.conf và Dockerfile (trong phần frontend): file cài đặt Jenkins CI/CD Pipeline

Build thành công thì sẽ không có thông báo nào được gửi tới bạn

Mình tiến hành sửa một chút để cho build failed giống như việc dự án của bạn bị lỗi trong quá trình code và tiến hành commit lại.

Đã có notification gửi về Telegram

 

Bạn có thể thấy thông tin lỗi gửi về kèm thông tin dự án ngoài ra bạn có thể tích hợp thêm nhiều thông tin Gitlab cung cấp sẵn như: ai commit, stage nào fail,…

tích hợp gửi thông báo Gitlab CI/CD đến Telegram

Ngoài ra bạn cũng có thể tích hợp gửi thông báo Gitlab CI/CD đến Telegram bằng 1 stage build như dưới đây:

Step 4: Hủy/xóa bỏ Bot gửi thông báo Gitlab CI/CD đến Telegram

 

Vậy là chúng ta đã tích hợp gửi thông báo Gitlab CI/CD đến Telegram chỉ vài phút, cũng khá tiện lợi còn nhiều cách mà Gitlab hỗ trợ như Webhook và nhiều cách khác để bạn cấu hình gửi về slack, mail,… Mình sẽ làm nhiều hướng dẫn hơn về các kỹ năng các tool khác để giúp bạn tối ưu được những tác vụ cũng như tiết kiệm những chi phí khi phát triển phần mềm. Thanks.

 

Mọi thắc mắc bạn có thể liên hệ:

Email: [email protected]