GitHub Actions: CI/CD tự động hóa cho người mới
📚 Git & GitHub Series (Bài 14/15) — Sau khi chọn được git workflow ở Bài 13, giờ ta tự động hóa nó bằng GitHub Actions.
GitHub Actions là công cụ CI/CD tích hợp sẵn trong GitHub, giúp bạn tự động build, test và deploy mỗi khi có thay đổi — không cần dịch vụ bên ngoài. Chính blog này được build và phát hành lên GitHub Pages hoàn toàn tự động nhờ Actions. Bài này giải thích các khái niệm cốt lõi và dựng workflow CI/CD đầu tiên của bạn, từng dòng.
GitHub Actions là gì và CI/CD để làm gì?
GitHub Actions cho phép định nghĩa các quy trình tự động chạy trên máy chủ của GitHub khi xảy ra sự kiện (push, pull request, theo lịch…). Lợi ích:
- CI (tích hợp liên tục): mỗi push tự động chạy test/build, phát hiện lỗi sớm.
- CD (phát hành liên tục): code qua kiểm tra được tự động deploy.
- Bớt thao tác thủ công, giảm sai sót con người, tăng tốc độ giao hàng.
Các khái niệm cốt lõi
Một quy trình GitHub Actions gồm các tầng:
| Khái niệm | Ý nghĩa |
|---|---|
| Workflow | Một quy trình tự động, định nghĩa trong file .yml |
| Event (trigger) | Sự kiện kích hoạt: push, pull_request, schedule… |
| Job | Một nhóm bước chạy trên cùng một máy ảo (runner) |
| Step | Một bước trong job: chạy lệnh hoặc dùng action có sẵn |
| Action | Khối tái sử dụng, ví dụ actions/checkout để lấy code |
Workflow đầu tiên: chạy test khi push
File workflow nằm trong .github/workflows/. Ví dụ một CI đơn giản cho dự án Node.js:
name: CI
on:
push:
branches: [ main ]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm test
Giải thích nhanh: workflow tên CI, kích hoạt khi push lên main hoặc khi có pull request. Nó chạy trên Ubuntu, checkout code, cài Node 20, cài dependency rồi chạy test. Commit file này vào repo là Actions tự chạy ngay.
Thêm bước deploy (CD)
Sau khi test xanh, bạn có thể nối thêm job deploy. Đây cũng là mô hình blog này dùng: build site tĩnh rồi đẩy lên GitHub Pages. Bạn có thể đọc chi tiết thực tế ở bài tự động deploy Zola bằng GitHub Actions, nơi mỗi PR merge vào main sẽ kích hoạt build và phát hành sản xuất.
Secrets — đừng bao giờ hardcode
Khi workflow cần token hay mật khẩu (ví dụ key deploy), không viết thẳng vào file YAML. Hãy lưu trong Settings → Secrets and variables → Actions, rồi dùng:
- run: ./deploy.sh
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
Đây là nguyên tắc bảo mật quan trọng, sẽ được nhấn mạnh ở Bài 15.
Ma trận (matrix) — test trên nhiều phiên bản
Một sức mạnh nữa của GitHub Actions là chạy cùng một job trên nhiều cấu hình song song bằng strategy.matrix. Ví dụ test trên ba phiên bản Node cùng lúc:
strategy:
matrix:
node-version: [ 18, 20, 22 ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm test
Thay vì viết ba job riêng, matrix tự nhân bản job cho từng giá trị. Cách này giúp bạn phát hiện sớm lỗi chỉ xuất hiện trên một phiên bản cụ thể, mà vẫn giữ file workflow gọn gàng.
Mẹo cho người mới
- Xem kết quả ở tab Actions của repo; mỗi lần chạy có log chi tiết từng step.
- Bắt đầu nhỏ: chỉ một job test, rồi mở rộng dần.
- Tận dụng Marketplace: hàng nghìn action dựng sẵn cho mọi nhu cầu.
- Dùng
workflow_dispatchđể có thể bấm chạy thủ công khi cần.
Tóm lại
GitHub Actions đưa CI/CD vào ngay trong repository: định nghĩa workflow bằng YAML, kích hoạt theo sự kiện, chạy job gồm các step để build, test, deploy tự động. Chỉ với một file nhỏ, bạn biến mỗi commit thành một quy trình kiểm tra và phát hành đáng tin cậy.
Bài cuối — Bài 15 — khép lại series với những điều quan trọng nhất về bảo mật và best practices với Git/GitHub.
Tham khảo & Nguồn dữ liệu
1. Liên kết bên ngoài được sử dụng trong bài viết
2. Liên kết nội bộ liên quan
3. Bản quyền & Ghi nguồn
Một phần dữ liệu trong bài viết được tham khảo từ GitHub Actions. Mọi thương hiệu, tên sản phẩm và tài liệu gốc thuộc quyền sở hữu của chủ sở hữu tương ứng. Bài viết chỉ trích dẫn, tổng hợp và phân tích — không nhằm thay thế tài liệu chính thức.
Câu hỏi thường gặp
GitHub Actions là gì?
CI/CD nghĩa là gì?
GitHub Actions có miễn phí không?
💬 BÌNH LUẬN
Đăng nhập GitHub để comment. Hỗ trợ markdown, reaction, reply.