CI/CD là gì?
CI/CD (Continuous Integration / Continuous Delivery) là một phương pháp phát triển phần mềm giúp tự động hóa quy trình kiểm tra và triển khai code. Thay vì ngồi gõ lệnh deploy thủ công mỗi lần sửa code, bạn để máy tính làm việc đó — nhanh hơn, chính xác hơn, và ít lỗi hơn.
- CI (Continuous Integration): Tự động kiểm tra code mỗi khi bạn push lên GitHub. Chạy test, kiểm tra lỗi cú pháp, đảm bảo code mới không phá hỏng code cũ.
- CD (Continuous Delivery/Deployment): Tự động đóng gói và deploy ứng dụng lên server sau khi vượt qua các bài kiểm tra.
Tại sao bạn cần CI/CD?
Hãy tưởng tượng bạn làm việc trong team 5 người. Mỗi ngày có 10 pull request. Nếu không có CI/CD, bạn phải review thủ công, chạy test local, SSH lên server kéo code — mất 15-30 phút mỗi lần và dễ sai sót.
Với CI/CD, mọi thứ tự động. Bạn chỉ cần ngồi chờ kết quả và can thiệp khi có lỗi.
Bắt đầu với GitHub Actions
GitHub Actions là công cụ CI/CD tích hợp sẵn trong GitHub, hoàn toàn miễn phí cho repository công khai. Chỉ cần tạo file .github/workflows/*.yml trong repository là xong.
Bước 1: Chuẩn bị dự án mẫu
Tạo ứng dụng Python Flask với unit test:
# app.py
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def home():
return jsonify({"message": "Hello CI/CD!"})
@app.route("/health")
def health():
return jsonify({"status": "ok"})
# test_app.py
from app import app
def test_home():
client = app.test_client()
resp = client.get("/")
assert resp.status_code == 200
assert resp.get_json()["message"] == "Hello CI/CD!"
def test_health():
client = app.test_client()
resp = client.get("/health")
assert resp.status_code == 200
assert resp.get_json()["status"] == "ok"
Bước 2: Tạo GitHub Actions workflow
Tạo file .github/workflows/ci.yml:
Thiết kế Website chuẩn SEO & tối ưu doanh số
Ftechx thiết kế trọn gói từ giao diện, hosting đến hệ thống thanh toán tự động.
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install -r requirements.txt
- run: pytest test_app.py -v
- run: pip install flake8 && flake8 app.py
Bước 3: Thêm CD — Tự động deploy
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == "refs/heads/main"
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: easingthemes/ssh-deploy@v5
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
REMOTE_HOST: ${{ secrets.SERVER_HOST }}
Quan trọng: Dùng GitHub Secrets, không hardcode key trong code!
Best Practices
| Nguyên tắc | Mô tả |
|---|---|
| Test nhanh | Pipeline dưới 5 phút, chạy song song nếu chậm |
| Không hardcode secret | Luôn dùng GitHub Secrets |
| Matrix testing | Test nhiều phiên bản Python cùng lúc |
| Cache deps | actions/cache giúp build nhanh hơn |
| Chỉ deploy từ main | Nhánh khác chỉ chạy CI, không CD |
Lợi ích thực tế
- Tốc độ: Push → deploy trong 3-5 phút
- An toàn: Code fail test không được deploy
- Minh bạch: Cả team thấy pipeline status
- Chất lượng: Ít bug hơn, deploy tự tin hơn
Kết luận
CI/CD với GitHub Actions hoàn toàn miễn phí, thiết lập chỉ trong 30 phút. Bắt đầu ngay: tạo workflow file, push code và xem tự động test + deploy!
💡 Mẹo nhỏ: Thử push code lỗi để xem GitHub Actions báo đỏ — cách học nhanh nhất!
Bạn đã áp dụng CI/CD cho dự án nào chưa? Gặp khó khăn gì? Để lại bình luận để FTECHX Solutions hỗ trợ bạn nhé!