Chuyển tới nội dung chính
Dev Templates
DevOps3 phút đọc

Gửi thông báo Slack từ GitHub Actions: để CI/CD không chạy trong im lặng

Tổng hợp ngắn các bước tích hợp Slack vào GitHub Actions — đủ để hình dung flow và quyết định có setup hay không, trước khi xem hướng dẫn chi tiết.

Bởi Phạm Thanh Tùng

CI/CD chạy tốt nhất khi nó vô hình — cho tới khi có gì đó hỏng. Vấn đề là "vô hình" cũng đồng nghĩa với "không ai biết": build fail đêm qua, sáng hôm sau mới có người mở tab Actions ra thấy.

Cách rẻ nhất để sửa khoảng mù này là đẩy kết quả build thẳng vào Slack — nơi team vốn đã ngồi cả ngày. Bài này tóm tắt luồng setup; các bước bấm chuột chi tiết mình dẫn về bài gốc ở cuối.

Flow gồm 3 phần

1. Tạo Slack App + Incoming Webhook → lấy URL dạng hooks.slack.com/services/... để GitHub gọi vào channel bạn chọn.

2. Lưu URL làm GitHub Secret (tên SLACK_WEBHOOK_URL) — tuyệt đối không commit vào repo.

3. Thêm step `act10ns/slack` vào workflow — action này tự đọc biến môi trường SLACK_WEBHOOK_URL và format message từ output các step trước, không phải tự ghép JSON.

Đoạn YAML tối thiểu

- name: Notify Slack
  if: always()
  uses: act10ns/slack@v2
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  with:
    channel: '#ci-notifications'
    status: ${{ job.status }}
    steps: ${{ toJson(steps) }}

Hai điểm dễ bỏ sót: if: always() đảm bảo step Slack vẫn chạy khi build fail (đúng lúc bạn cần nhận thông báo nhất), và status: ${{ job.status }} cho Slack hiển thị màu xanh/đỏ theo kết quả.

Xem hướng dẫn đầy đủ

Toàn bộ các bước bấm chuột trong Slack UI và GitHub Settings — kèm screenshot — có trong bài gốc của Coach AK: How to integrate Slack with GitHub Actions.

Bài trên trình bày ví dụ với project Java/Maven, nhưng phần Slack webhook và action act10ns/slack dùng được cho mọi stack — chỉ cần thay các step build tương ứng.

Thẻ

  • Slack
  • GitHub Actions
  • CI/CD
  • DevOps

Bài viết khác