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é.
Nội dung
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,…
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]