Phần 1 — Tổng quan: GitLab CI/CD, kiến trúc và các khái niệm
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Pipeline production Next.js → Docker → K8s với cache image, manual approval. Tổng kết best practices và kỹ thuật debug (CI Lint, visualizer, CI_DEBUG_TRACE).
Khai báo environment để GitLab theo dõi deployments, có lịch sử và nút rollback. Review Apps — tính năng signature: mỗi MR tự deploy lên môi trường tạm.
Tái sử dụng pipeline giữa nhiều dự án với include (local, project, template, remote), kế thừa job với extends (hidden job), và YAML anchors.
Series GitLab CI/CD Toàn Tập — 9 phần:
Phần 1 — Tổng quan: GitLab CI/CD, kiến trúc và các khái niệm ← bạn đang đọc
Phần 2 — .gitlab-ci.yml đầu tiên và Variables (predefined, UI, masked)
Phần 5 — GitLab Runner self-hosted: cài đặt và executors (Shell/Docker)
Phần 9 — Pipeline thực tế Next.js → Docker → K8s + best practices + debug
GitLab CI/CD là một trong những hệ CI/CD trưởng thành nhất — tích hợp cùng nền tảng với repo, container registry, environments, monitoring; không cần plugin, không cần dịch vụ ngoài. Pipeline được mô tả bằng một file .gitlab-ci.yml duy nhất, executor đa dạng (Shell, Docker, Kubernetes), và có những tính năng signature như Review Apps — mỗi merge request tự deploy lên môi trường tạm.
Series này gồm 9 phần, đi từ .gitlab-ci.yml đầu tiên đến pipeline production triển khai Next.js trên Kubernetes. Trong Phần 1, ta trả lời 2 câu hỏi nền tảng: vì sao chọn GitLab CI/CD và nó tổ chức công việc qua những khái niệm nào.
GitLab tích hợp CI/CD ngay trong product — không cần plugin, không cần dịch vụ ngoài. Mọi pipeline được định nghĩa bằng một file YAML duy nhất (.gitlab-ci.yml) trong repo. Toàn bộ trải nghiệm — repo, issue tracker, container registry, CI/CD, environment, monitoring — đều nằm trên một nền tảng.
| Tiêu chí | GitLab CI/CD | GitHub Actions |
|---|---|---|
| File config | Một file .gitlab-ci.yml | Nhiều file .github/workflows/*.yml |
| Đơn vị thực thi | Job thuộc Stage | Step thuộc Job thuộc Workflow |
| Marketplace | Không có — dùng include & template | 20.000+ action |
| Container Registry | Tích hợp sẵn (free) | GHCR riêng |
| Self-hosted runner | Mạnh, nhiều executor | Đơn giản nhưng ít executor |
| Auto DevOps | Có — pipeline mặc định | Không có |
| Review Apps | Native | Phải tự dựng |
Điểm mạnh nhất của GitLab CI/CD: executor đa dạng (chạy job trên shell, Docker container, Kubernetes pod, máy ảo) và review app — mỗi merge request tự deploy lên môi trường tạm để QA bấm xem.
Một pipeline là toàn bộ quy trình tự động sinh ra cho một commit/merge request. Mỗi pipeline gồm nhiều stage, mỗi stage gồm nhiều job.
Stage là một mốc tuần tự — các job cùng stage chạy song song, stage sau chỉ chạy khi stage trước thành công.
┌──────────┐ ┌──────────┐ ┌──────────┐
│ build │ → │ test │ → │ deploy │
└──────────┘ └──────────┘ └──────────┘
job a, b job c, d, e job f
(parallel) (parallel)
Đơn vị thực thi nhỏ nhất — một danh sách lệnh shell chạy trên runner. Mỗi job khai báo:
stage — thuộc stage nào.
image — chạy trong Docker image nào (với executor Docker).
script — lệnh thực thi.
rules/only/except — điều kiện chạy.
Máy thật sự chạy job — có thể là máy của GitLab.com (shared runner) hoặc máy bạn tự dựng (self-hosted runner).
Mỗi runner cần một executor — cách runner thực sự chạy job:
| Executor | Mô tả | Khi nào dùng |
|---|---|---|
| shell | Chạy trực tiếp trên máy host | Đơn giản, test nhanh, deploy |
| docker | Mỗi job chạy trong container mới | Phổ biến nhất — cô lập tốt |
| docker-machine | Tự spin VM, deprecated | Đã có thay thế |
| kubernetes | Mỗi job là một pod K8s | Scale tự động trên cluster |
| ssh / virtualbox | Chạy qua SSH hoặc VM | Trường hợp đặc biệt |
Trong phần này bạn đã nắm:
Vì sao GitLab CI/CD vượt trội: tích hợp đồng bộ + executor đa dạng + Review Apps.
So sánh nhanh với GitHub Actions ở 7 tiêu chí (file config, marketplace, registry, runner, Auto DevOps…).
5 khái niệm cốt lõi: Pipeline → Stage → Job → Runner → Executor.
5 loại executor: shell, docker, docker-machine, kubernetes, ssh/virtualbox — và khi nào nên chọn cái nào.
Trong Phần 2, ta sẽ viết .gitlab-ci.yml đầu tiên, hiểu từng key (stages, default, cache, artifacts, script), rồi đi sâu vào hệ thống Variables: predefined, UI-defined, masked, protected và biến cục bộ trong YAML.