Kết hợp webhooks GitLab và Twilio để nhận cảnh báo SMS trên nền tảng DevSecOps

Kết hợp webhooks GitLab và Twilio để nhận cảnh báo SMS trên nền tảng DevSecOps

Tất cả các tổ chức công nghệ hiện đại đều hướng tới việc xây dựng một môi trường DevSecOps hiệu quả và bảo mật, giúp nhóm phát triển phối hợp linh hoạt để nhanh chóng cung cấp sản phẩm chất lượng đến khách hàng. Tuy nhiên, dù có thiết kế hệ thống bảo mật tinh vi đến đâu, sự cố vẫn có thể xảy ra bất cứ lúc nào. Khi điều đó xảy ra, việc phản ứng và khắc phục nhanh là ưu tiên hàng đầu. Để đạt được điều này, không chỉ dữ liệu sự cố được ghi nhận chi tiết mà còn phải thông báo tức thời đến đúng người trách nhiệm. Bài viết này sẽ hướng dẫn cách thiết lập webhook GitLab webhook kết hợp với Chức năng của Twilio để gửi thông báo SMS tự động tới người phụ trách, giúp họ cập nhật và xử lý vấn đề nhanh chóng.

Điều kiện tiên quyết

  1. Tài khoản GitLab: Webhooks được hỗ trợ trên mọi cấp độ giấy phép, từ Miễn phí, Cao cấp đến Ultimate, áp dụng cho cả dịch vụ SaaS GitLab hoặc tự quản lý. Nếu bạn chưa có, có thể đăng ký tại trang đăng ký GitLab.
  2. Tài khoản Twilio: Để xử lý webhook và gửi SMS, bạn cần có tài khoản Twilio. Nếu chưa có, đăng ký tại Trang đăng ký Twilio.
  3. (Tùy chọn) Điện thoại hỗ trợ SMS để kiểm tra chức năng gửi nhận tin nhắn vào cuối hướng dẫn.
  4. (Tùy chọn) Kiến thức cơ bản về Node.js: Vì webhook được xử lý qua Twilio Functions dùng Node.js, hiểu biết cơ bản sẽ giúp bạn mở rộng và tùy chỉnh chức năng linh hoạt hơn, dù có thể sao chép trực tiếp mã mẫu.

Xây dựng thông báo SMS tự động

Chúng ta bắt đầu thiết lập hệ thống thông báo SMS thời gian thực.

Tổng quan quy trình:

Quy trình làm việc qua SMS

  1. Sự kiện xảy ra trong GitLab được webhook của GitLab bắt và xử lý.
  2. Webhook gửi dữ liệu sự kiện tới Twilio Function.
  3. Twilio Functions nhận dữ liệu sự kiện và tạo nội dung SMS phù hợp.
  4. Twilio Functions kích hoạt Tin nhắn có thể lập trình Twilio với nội dung SMS và thông tin người nhận.
  5. Tin nhắn được gửi tới người nhận qua SMS.

Thiết lập SMS Twilio

Đăng nhập vào tài khoản Twilio của bạn để cấu hình môi trường gửi SMS. Nếu chưa có, tham khảo phần điều kiện tiên quyết để đăng ký.

Bạn sẽ thấy Bảng điều khiển Twilio như hình dưới:

Bảng điều khiển Twilio

Đi tới menu bên trái chọn Hoa Kỳ (US1) > Số điện thoại > Quản lý > Số hoạt động và nhấn nút “Mua số”.

Mua màn hình số

Chọn một số điện thoại để gửi thông báo từ đó. Lưu ý một số hướng dẫn gửi SMS quốc tế dựa vào số Twilio bạn mua. Trong ví dụ, tôi lấy số US làm số gửi và dùng số cá nhân US làm số nhận. Đảm bảo số điện thoại đã chọn hỗ trợ SMS rồi nhấn “Mua số”.

webhooks twilio - hình 4

Tiếp theo, cho phép Tin nhắn có thể lập trình Twilio gửi SMS tới quốc gia của số điện thoại người nhận. Vào Hoa Kỳ (US1) > Nhắn tin > Cài đặt > Quyền địa lý và chọn quốc gia tương ứng (ví dụ Hoa Kỳ).

webhook twilio - hình 5

Bấm “Lưu quyền địa lý” để hoàn tất. Bây giờ bạn đã sẵn sàng gửi SMS.

Tiếp theo, cấu hình việc xử lý webhook qua Twilio Functions để gửi cảnh báo SMS.

Thiết lập chức năng Twilio

Để xử lý webhook gửi tới Twilio, cần tạo Hàm Twilio. Vào Hoa Kỳ (US1) > Chức năng và Tài sản > Chức năng (Cổ điển) > Danh sách nhấn “Tạo hàm”, chọn mẫu “Xin chào SMS” và tạo mới.

Tạo hàm Twilio

Tiếp tục cấu hình hàm:

  1. Thiết lập đường dẫn ví dụ /handle-event-webhook. Ví dụ đường dẫn có thể là https://daff-mac-7354.twil.io/handle-event-webhook.
  2. Tắt tùy chọn Check for valid Twilio signature.
  3. Sửa mã hàm như sau, thay <your personal phone number><your twilio phone number> bằng số thực tế của bạn:

      exports.handler = function (context, event, callback) {
  const twilioClient = context.getTwilioClient();

twilioClient.messages .create({ body: Hi there! There was an update to issue (${event("object_attributes")("id")}) with title "${event("object_attributes")("title")}" in project ${event("repository")("name")}. It was just ${event("object_attributes")("action")}., to: "", from: "", }) .then((message) => { console.log("SMS successfully sent"); console.log(message.sid); return callback(null, Success! Message SID: ${message.sid}); }) .catch((error) => { console.error(error); return callback(error); }); };

Giao diện hàm trông sẽ như hình dưới:

Cấu hình cho chức năng Twilio

Khi webhook kích hoạt, SMS với nội dung thay đổi của một vấn đề sẽ được gửi đi. Bạn có thể tham khảo các sự kiện webhook GitLab để tùy biến thêm.

Tiếp theo, cấu hình webhook trong GitLab để gọi hàm này khi có sự kiện xảy ra.

Thiết lập webhooks GitLab

Đăng nhập GitLab, vào dự án cần cấu hình webhook.

Vào Cài đặt > Webhook, nhấn “Thêm webhook mới”.

Màn hình thêm webhook mới

Chỉ cần cấu hình:

  1. URL: Đường dẫn hàm Twilio đã tạo; ví dụ https://daff-mac-7354.twil.io/handle-event-webhook.
  2. Kích hoạt: Chọn sự kiện muốn phản hồi, ví dụ “Sự cố xảy ra” đối với vấn đề sự kiện.

Định cấu hình trường URL và kích hoạt

Chuẩn bị xong để kiểm thử!

Kiểm tra

Trong dự án được thiết lập, vào “Kế hoạch > Sự cố” rồi chọn “Vấn đề mới”.

Màn hình vấn đề mới

Thêm tiêu đề và nhấn “Tạo vấn đề”.

Tạo màn hình vấn đề

Nếu thành công, bạn sẽ nhận được tin nhắn SMS dạng:

Sent from your Twilio trial account - Hi there! There was an update to issue (146735617) with title "GitLab webhook example" in project Webhooks Example. It was just opened.

Mở rộng trường hợp sử dụng

Với tích hợp webhook GitLab và SMS Twilio, hệ thống phản hồi sự kiện trở nên nhanh chóng và hiệu quả hơn, giúp phản ứng kịp thời với các vấn đề tồn đọng hay mới phát sinh trong dự án. Mẫu đơn giản này minh họa cách tiếp nhận thông tin tức thì cho một loại sự kiện. Tuy nhiên, hệ thống có thể mở rộng để hỗ trợ nhiều người nhận hoặc hơn thế nữa:

  1. Gửi SMS cho nhiều người: Mở rộng Twilio Functions để gửi tin nhắn đến danh sách số điện thoại. Có thể dùng Dịch vụ nhắn tin Twilio để đơn giản hóa gửi SMS cho nhiều đầu số.
  2. Xử lý đa dạng loại sự kiện: Cho phép chọn nhiều sự kiện webhook trong GitLab như bình luận, triển khai hoặc phát hành.
  3. Cấu hình mức nhóm: Thay vì từng dự án, webhook có thể được cấu hình cấp nhóm để quản lý tập trung, giảm thiểu thao tác cài đặt cho từng dự án.
  4. Tự lưu trữ mã tạo tin nhắn: Thay vì dùng Twilio Functions, có thể dùng SDK phía máy chủ Twilio tự lưu trữ để linh hoạt hơn trong quản lý mã nguồn và tích hợp với hệ thống backend có sẵn như cơ sở dữ liệu người nhận.

Bạn có thể bắt đầu bản dùng thử GitLab Ultimate miễn phí để trải nghiệm các tính năng DevSecOps toàn diện hơn.

Liên hệ ngay với Softribution để được tư vấn chi tiết hoặc sở hữu ngay các giải pháp tích hợp DevSecOps và thông báo tự động SMS hàng đầu, giúp tối ưu quy trình vận hành, bảo mật hệ thống và nâng cao hiệu suất làm việc của doanh nghiệp bạn.

Share this post