Domain 5 · 9 phút đọc

Git là nền tảng cho CI/CD

Git as the Foundation for CI/CD

Mọi hệ thống CI/CD hiện đại đều xoay quanh Git. Một sự kiện Git (push, pull request, tag) chính là ngòi nổ kích hoạt build, test và deploy tự động. Bài cuối domain này tổng kết cách Git làm nền cho quy trình đó.

Git event làm trigger pipeline

Pipeline lắng nghe các sự kiện trên repo và chạy tương ứng:

TriggerSự kiệnThường dùng để
pushPush lên một nhánhBuild và test mỗi thay đổi
pull requestMở/cập nhật PRChạy kiểm tra trước khi cho merge
tagTạo tag vX.Y.ZBuild artifact và phát hành (release)
# Ví dụ GitHub Actions: trigger theo push và tag
on:
  push:
    branches: [main]
    tags: ["v*"]
  pull_request:
    branches: [main]

Branch protection

Branch protection đặt rào chắn cho các nhánh quan trọng như main:

  • Cấm push thẳng — mọi thay đổi phải qua pull request.
  • Bắt buộc CI pass mới được merge.
  • Yêu cầu số lượng review tối thiểu.
  • Cấm force-push để bảo vệ lịch sử.

Nhờ đó code vào main luôn được kiểm tra tự động và có người duyệt.

Semantic tag và release

Dùng Semantic Versioning (MAJOR.MINOR.PATCH, vd. 2.4.1) để đánh tag phát hành rõ nghĩa:

# Tạo tag có chú thích rồi push để kích hoạt pipeline release
git tag -a v2.4.1 -m "Release 2.4.1"
git push origin v2.4.1
  • MAJOR: thay đổi phá vỡ tương thích.
  • MINOR: thêm tính năng, vẫn tương thích.
  • PATCH: sửa lỗi nhỏ.

Pipeline bắt được tag v* sẽ build artifact và tạo release tương ứng.

Best practices commit và branch

Nguyên tắcLý do
Commit nhỏ, một mục đíchDễ review, dễ revert khi lỗi
Message theo conventional commitsfeat:, fix:... giúp sinh changelog tự động
Nhánh ngắn hạn, hợp nhất sớmGiảm conflict, tránh nhánh "trôi" quá xa main
Dọn lịch sử trước khi mergeDùng interactive rebase/squash cho PR sạch
Giữ main luôn deploy đượcMọi commit vào main đều đã qua CI

Commit là hợp đồng với pipeline

Vì pipeline kích hoạt theo Git event, hãy coi mỗi push/PR/tag như một "lệnh" gửi cho hệ thống. Commit message và tag rõ ràng giúp tự động hóa changelog, versioning và release mượt mà.

Đừng push trực tiếp lên main

Trên dự án nhóm, push thẳng lên main né được CI và review. Luôn bật branch protection để ép mọi thay đổi đi qua pull request đã kiểm tra.

Trọng tâm thi

CI/CD trigger theo Git event: push (build/test), PR (kiểm tra trước merge), tag v* (release). Branch protection ép PR + CI pass + review trước khi vào main. Dùng semantic versioning cho tag phát hành và conventional commits để tự sinh changelog.

Tóm tắt

  • Git event là ngòi nổ của CI/CD: push (build/test), pull request (kiểm tra trước merge), tag (release).
  • Branch protection bảo vệ main: bắt buộc PR, CI pass, review, cấm force-push.
  • Đánh tag theo Semantic Versioning (MAJOR.MINOR.PATCH) để pipeline build và phát hành.
  • Best practices: commit nhỏ một mục đích, conventional commits, nhánh ngắn hạn, dọn lịch sử trước merge, giữ main luôn deploy được.
  • Commit/tag rõ ràng là điều kiện để tự động hóa changelog, versioning và release.