- Quá trình và phương pháp phát triển một Slack bot để tự động phát hành nội dung lên blog kỹ thuật
- Quá trình phát triển
-
- Lập kế hoạch tự động hóa
- Thứ nhất, khi phát hành nội dung lên blog kỹ thuật, nhóm quyết định tích hợp các công cụ đang dùng trước đó (Notion, GitLab) vào một công cụ mới (Slack bot). Mục đích là giúp các thành viên dễ dàng và nhanh chóng thích nghi với hệ thống phát hành mới
- Thứ hai, quyết định sử dụng framework TypeScript. TypeScript được sử dụng rộng rãi, và vì là ngôn ngữ kiểu tĩnh nên có thể phát triển ổn định. Điều này cũng giúp việc bảo trì hệ thống phát hành mới trở nên dễ dàng và thuận tiện hơn
- Thứ ba, hỗ trợ tương tác thân thiện với người dùng
- Lý do chọn Slack bot
- Slack bot đáp ứng đầy đủ tất cả các nguyên tắc này
- Slack bot cung cấp một framework tên là
Bolt. Framework này hỗ trợ tốt không chỉ JavaScript, Java, Python mà cả tài liệu hướng dẫn. Dựa vào đó, việc phát triển công cụ tự động hóa phát hành blog kỹ thuật trở nên dễ dàng hơn. Ngay cả khi chạy trong môi trường local, vẫn có thể kiểm thử công cụ trong ứng dụng Slack
- Slack hỗ trợ thiết kế giao diện hiển thị cho người dùng bằng tính năng
Block Kit. Có thể thiết kế luồng màn hình bằng JSON và xử lý dữ liệu bằng hàm để tạo ra tương tác trực quan
-
- Thiết kế giao diện
- Slack hỗ trợ message và modal để phục vụ tương tác với người dùng
- Workflow phát hành nội dung lên blog kỹ thuật được triển khai bằng modal
- Quy trình phát hành blog kỹ thuật bằng Slack bot
- Đăng bài blog: chọn nội dung nào sẽ được phát hành ở đâu
- Kiểm tra tính hợp lệ của blog: xác nhận nội dung chuẩn bị phát hành đã có đầy đủ các thành phần cần cho frontend như metadata và ảnh cover hay chưa
- Kiểm tra issue/MR trên GitLab: bước tạo issue và MR trên GitLab. Nếu issue và MR đã tồn tại thì commit vào MR đó
- Thông báo hoàn tất: khi phát hành xong, để lại message kèm liên kết đến nội dung gốc trên Notion và liên kết GitLab MR
-
- Thiết kế và xây dựng bot
- Mục tiêu là để một bot duy nhất tương tác với tất cả các dịch vụ khác như Notion, GitLab
- Khi tạo pipeline CI/CD trên GitLab để triển khai ứng dụng hoặc chỉnh sửa bot, nhóm đánh giá cách này sẽ có lợi hơn
- Việc phát triển bot sử dụng ngôn ngữ TypeScript và framework
Bolt do Slack hỗ trợ
- Cấu trúc thư mục được áp dụng dựa trên cảm hứng từ NestJS
workflow.ts : định nghĩa giao diện và luồng dữ liệu, là điểm bắt đầu của mọi workflow
service.ts : định nghĩa business logic
model.ts : định nghĩa kiểu dữ liệu cho Slack hoặc API bên thứ ba
modal.ts : định nghĩa giao diện tương tác với người dùng
-
- Cách bot hoạt động
- Khi nhập lệnh vào bất kỳ kênh nào trên Slack, bot sẽ được gọi
- Lúc này, người dùng chọn tiêu đề nội dung trên Notion và kênh sẽ đăng nội dung, sau đó nhấn nút “Gửi” thì hệ thống sẽ tự động kiểm tra xem các metadata bắt buộc đã được nhập hay chưa
- GitLab ID, tên tác giả, tên file md, ảnh cover,
<!--truncate--> v.v. là các metadata bắt buộc phải nhập; nếu thiếu dù chỉ một mục thì không thể đăng nội dung
- Nếu tất cả metadata bắt buộc đã được nhập, có thể nhấn nút “Tiếp tục” để chuyển sang bước tiếp theo
- Lúc này, issue và MR cho nội dung đó sẽ được tự động tạo trên GitLab
- Label cũng sẽ được gắn tự động vào MR, đồng thời pipeline phát hành nội dung cũng được chạy tự động
- Sau khi pipeline chạy xong, có thể xem trước trạng thái phát hành nội dung thông qua GitLab Review App
- Kết quả triển khai
- Tần suất technical writer và engineer tạo MR để phát hành nội dung lên blog kỹ thuật tăng khoảng 30%
- Chỉ với một lần nhấp, có thể phát hành nội dung trong vòng chưa tới 1 phút
- Tỷ lệ pipeline thất bại giảm xuống dưới 5%
Chưa có bình luận nào.