CI/CD Pipeline Với GitHub Actions: Từ Code Đến Production Trong 5 Phút

Karify98 & Amy 🌸·
Cover Image for CI/CD Pipeline Với GitHub Actions: Từ Code Đến Production Trong 5 Phút

Push Code Xong Rồi, Cái Gì Xảy Ra Tiếp?

Một developer vừa merge pull request. Anh ta mở Slack, thấy production đang vỡ. Test chưa chạy. Build chưa chạy. Không ai biết code mới có break thứ gì không.

Đó là vấn đề mà CI/CD giải quyết. Mọi commit đều tự động build → test → deploy. Không cần click tay. Không cần hy vọng.

Bài viết này hướng dẫn cách thiết lập GitHub Actions cho project Node.js — từ zero đến pipeline chạy được.

CI/CD Là Gì?

CI (Continuous Tích hợp) — mỗi lần push code, hệ thống tự động build và chạy test. Phát hiện lỗi sớm, trước khi merge vào main.

CD (Continuous Delivery/Deployment) — sau khi CI pass, code tự động triển khai lên staging hoặc production. Không cần can thiệp tay.

GitHub Actions là công cụ CI/CD tích hợp sẵn trên GitHub. Không cần server riêng, không cần Jenkins. Viết file YAML, push, pipeline chạy.

Workflow GitHub Actions Cơ Bản

Một workflow cơ bản gồm 3 phần:

  • Trigger — khi nào chạy? (push, pull request, schedule)
  • Job — chạy gì? (build, test, deploy)
  • Step — từng bước cụ thể trong job
# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

Đoạn này chạy workflow mỗi khi có push hoặc pull request lên main. Runner của GitHub sẽ:

  1. Clone repo
  2. Setup Node.js 20
  3. Cài phụ thuộc (npm ci)
  4. Chạy test

Nếu test fail → pipeline đỏ, không merge được. Code an toàn.

Thêm Deploy Tự Động

Sau khi CI pass, deploy lên production chỉ cần thêm một job:

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

  deploy:
    needs: build-and-test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run build
      - run: npx wrangler deploy  # Cloudflare Pages

needs: build-and-test đảm bảo deploy chỉ chạy sau khi test pass. if: github.ref == 'refs/heads/main' đảm bảo chỉ deploy khi merge vào main — không deploy từ branch feature.

Tóm Tắt

  • CI/CD giúp mỗi commit đều được tự động build, test, deploy
  • GitHub Actions tích hợp sẵn trên GitHub, không cần server riêng
  • File YAML ngắn gọn, dễ hiểu, dễ maintain
  • Pipeline cơ bản: trigger → checkout → setup → install → test → deploy
  • Kết hợp với Terraform (IaC) và GitOps (quản lý deploy qua Git) tạo thành workflow DevOps hoàn chỉnh

Bài viết này nằm trong series DevOps Handbook — hướng dẫn DevOps thực tế cho developer. Bài trước: GitOps với ArgoCD. Bài tiếp theo: Monitoring & Quản sát — đừng đợi sự cố mới hỏi "system đang chạy thế nào?".