GitHub Actions: tạo workflow đầu tiên để tự chạy test

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

GitHub Actions cho phép bạn chạy kịch bản tự động mỗi khi có sự kiện trên kho mã, như đẩy code hoặc mở pull request. Chỉ cần một file YAML, bạn đã có hệ thống kiểm tra tự động miễn phí cho nhiều dự án nhỏ.

Các khái niệm chính

  • Workflow: một quy trình tự động, định nghĩa bằng file YAML trong thư mục .github/workflows/.
  • Event: sự kiện kích hoạt, ví dụ push, pull_request, hoặc lịch hẹn giờ.
  • Job: nhóm các bước chạy trên một máy (runner). Các job mặc định chạy song song.
  • Step: một bước cụ thể, là lệnh shell hoặc một action dùng lại.
  • Action: đoạn tự động hóa đóng gói sẵn, ví dụ lấy mã nguồn hay cài Node.js.

Workflow chạy test cho dự án Node.js

Tạo file .github/workflows/ci.yml:

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
          cache: npm
      - run: npm ci
      - run: npm run lint
      - run: npm test

Đọc từng phần: workflow chạy khi đẩy lên nhánh main hoặc khi có pull request. Job test chạy trên máy Ubuntu do GitHub cung cấp. Các bước lần lượt lấy mã, cài Node 20 (kèm cache thư viện npm), cài thư viện bằng npm ci, chạy lint rồi chạy test.

Lệnh npm ci cài đúng theo file khóa phiên bản, nên kết quả ổn định hơn npm install trong môi trường tự động.

Xem kết quả

Sau khi đẩy file lên, vào tab Actions của kho mã để xem từng lần chạy. Nếu một bước lỗi, bạn mở log của bước đó ra đọc. Với pull request, kết quả hiện ngay trên trang PR dưới dạng dấu tích xanh hoặc dấu X đỏ, giúp người review biết có nên xem tiếp hay không.

Chạy trên nhiều phiên bản bằng matrix

Muốn thử trên nhiều phiên bản Node, dùng chiến lược matrix:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [18, 20, 22]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci
      - run: npm test

GitHub sẽ tạo ba job song song, mỗi job một phiên bản.

Dùng secrets an toàn

Khi cần khóa API hoặc mật khẩu, vào Settings của kho mã, mục Secrets and variables, tạo secret rồi tham chiếu bằng ${{ secrets.TEN_SECRET }}. Đừng bao giờ ghi trực tiếp giá trị nhạy cảm vào file workflow vì file này nằm cùng mã nguồn.

Mẹo giữ workflow gọn và nhanh

  1. Bật cache thư viện như ví dụ trên để tiết kiệm thời gian.
  2. Ghim phiên bản action (ví dụ @v4) thay vì dùng nhánh thay đổi.
  3. Chia job hợp lý: lint và test chạy song song nếu độc lập.
  4. Dùng điều kiện if để bước triển khai chỉ chạy ở nhánh chính.
  5. Đặt tên step rõ ràng để đọc log dễ dàng.

Kết luận

Chỉ mất khoảng mười phút để có workflow đầu tiên, nhưng lợi ích kéo dài suốt vòng đời dự án: mỗi pull request đều được kiểm tra tự động. Hãy thêm nó vào một dự án của bạn ngay hôm nay, rồi mở rộng dần sang build và triển khai.

Nếu bạn muốn học cả chuỗi tự động hóa từ test đến triển khai trên máy chủ thật, hãy tham khảo các khóa học tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment