Đi đến nội dung chính
VI
Trang chủ / Bài viết / CI/CD không chỉ là build: thiết lập cổng kiểm soát chất lượng
02 thg 7, 2026 · Z-SOFT Admin · 10 phút đọc

CI/CD không chỉ là build: thiết lập cổng kiểm soát chất lượng

Kiểm tra mã nguồn, định dạng, kiểu dữ liệu, kiểm thử, bản build và bảo mật trước khi tạo gói phát hành có thể truy vết.

Xem tất cả bài viết

Ý chính: Một pipeline CI tốt tạo ra bằng chứng rằng đúng mã nguồn đã được kiểm tra, đóng gói và đưa tới môi trường thật.

Thuật ngữ trong bài: Quality Gate: điều kiện bắt buộc trước khi hợp nhất hoặc phát hành; SAST: quét lỗi bảo mật trong mã nguồn; SBOM: danh sách thành phần có trong sản phẩm.

Bài toán thực tế

Build thành công chưa chứng minh mã nguồn đạt chất lượng. Kiểm thử có thể bị bỏ qua, thư viện có thể có lỗ hổng và secret có thể bị đưa nhầm vào gói. Runner quá nhiều quyền còn biến một Pull Request thành rủi ro đối với toàn bộ chuỗi phát hành.

Điểm dễ bị bỏ qua

GitLab CI và GitHub Actions khác cú pháp nhưng cùng một nguyên tắc: quyền tối thiểu, tác vụ cô lập, quan hệ phụ thuộc rõ và một gói phát hành duy nhất được chuyển qua các môi trường.

Cổng bảo mật chỉ hữu ích khi vấn đề phát hiện có người phụ trách, mức độ nghiêm trọng và thời hạn xử lý. Tắt công cụ quét vì quá nhiều cảnh báo chỉ che rủi ro sang chỗ khác.

Luồng xử lý

Kiểm tra mã nguồn
Format, tệp được sinh tự động, lockfile
Chất lượng
Lint, types, tests, bản build
Bảo mật
Secret, SAST, dịch vụ phụ thuộc, image
Phát hành
SBOM, chữ ký, provenance
Bước kiểm tra nhanh, xác định báo lỗi sớm; chỉ commit đã xác minh mới được tạo gói phát hành không thể thay đổi.

Thiết kế và triển khai

Dừng sớm khi có lỗi rồi mới đi sâu

Chạy định dạng mã nguồn, kiểm tra mã nguồn, lint và type trước. Kiểm thử tích hợp, bản build và quét chỉ chạy song song sau khi bước kiểm tra rẻ đạt.

Bản build một lần, chuyển tiếp nhiều nơi

Tạo container hoặc gói phần mềm từ commit đã rà soát, ghi mã băm rồi dùng lại ở môi trường thử nghiệm và production thay vì dựng lại.

Tách vùng tin cậy

Bản fork và tác vụ kiểm tra Pull Request chỉ được dùng token có quyền đọc. Ký số và triển khai chỉ chạy trên nhánh hoặc thẻ được bảo vệ bằng danh tính của tiến trình ngắn hạn và môi trường được duyệt.

Đi sâu vào thiết kế

Kiểm tra mã nguồn để phát hiện sai lệch bị bỏ sót

Kiểm tra định dạng mã nguồn, mã ứng dụng khách được sinh tự động, lược đồ đầu ra, tính nhất quán của lockfile và tệp lớn hoặc bí mật bị cấm. Thư mục làm việc phải sạch sau bước sinh mã.

Ngoại lệ bảo mật là một khoản nợ phải được kiểm soát

Ngoại lệ tạm thời ghi vấn đề phát hiện, người phụ trách, biện pháp kiểm soát bù và thời điểm hết hạn. Ngoại lệ tạm thời hết hạn làm pipeline báo lỗi thay vì im lặng vĩnh viễn.

Cách triển khai

  1. Kiểm tra trạng thái kho mã, lockfile và tệp sinh tự động trước các tác vụ tốn tài nguyên.
  2. Chạy lint, kiểm tra kiểu dữ liệu, kiểm thử và build production song song với ngưỡng chất lượng rõ ràng.
  3. Quét cả mã nguồn lẫn gói phát hành, ký số đúng một lần và chuyển cùng mã băm qua mọi môi trường.

Mã minh họa: Các giai đoạn kiểm soát chất lượng tương đương

verify: format --check; generated-diff; lockfile-policy
quality: lint; typecheck; unit --coverage; integration
build: production-build; migration-check
security: secret-scan; SAST; dependency-audit; image-scan
release: SBOM; sign(digest); attest(provenance)
deploy: promote(the_same_digest)

GitLab dùng stages và needs; GitHub Actions dùng jobs và needs. Đặt lệnh trong script của repository để máy cá nhân và CI chạy cùng một quy trình.

Rủi ro cần tính trước

  • Cache khôi phục tệp thực thi được tạo từ một nhánh không đáng tin cậy.
  • Lệnh kiểm thử trả mã thành công dù đã âm thầm bỏ qua một project bắt buộc.
  • Tác vụ triển khai tự build lại với image nền không khóa phiên bản và tạo ra mã băm khác.

Nên theo dõi gì?

Tín hiệuĐiều tín hiệu cho biết
Thời gian chạy pipeline và thời gian chờCho biết phản hồi có đủ nhanh để đội ngũ không tìm cách bỏ qua kiểm soát.
Tỷ lệ lỗi theo cổng và số kiểm thử chỉ đạt sau khi chạy lạiPhân biệt lỗi sản phẩm thật với pipeline thiếu ổn định.
Mức bao phủ của mã băm, SBOM và chữ kýChứng minh mỗi bản phát hành có thể truy ngược về đúng mã nguồn và bước kiểm tra.

Cách kiểm chứng

  • Tạo có chủ đích một lỗi lint, test, bản build, secret và thư viện có lỗ hổng để chứng minh từng cổng kiểm soát chặn.
  • Mở Pull Request từ nguồn không đáng tin cậy và xác nhận không chạm bí mật được bảo vệ hoặc runner.
  • Truy từ production mã băm về commit, bước kiểm tra, SBOM, chữ ký và phê duyệt.

Đưa vào production từng bước

Đo pipeline hiện tại, thêm từng cổng ở chế độ chỉ báo cáo và xử lý cảnh báo nhiễu trước. Bật bắt buộc cho các bước kiểm tra nhanh, tiếp đến là chính sách bảo mật; sau cùng mới ký số gói phát hành và tối ưu thời gian chạy bằng cache cùng tác vụ song song.

Checklist trước khi vận hành

  • Được bảo vệ branch yêu cầu đủ bước kiểm tra và rà soát vẫn còn hiệu lực.
  • Pull Request từ nguồn không đáng tin cậy không đọc bí mật triển khai hoặc dùng runner có đặc quyền.
  • Tác vụ lỗi hoặc bị hủy không để lại gói chưa hoàn chỉnh có thể phát hành.

Điều cần nhớ

CI/CD là chuỗi bằng chứng nối mã nguồn đã rà soát với đúng gói phát hành đang chạy trên production.

HỢP TÁC CÙNG Z-SOFT

Mỗi quyết định công nghệ hôm nay đều ảnh hưởng đến nhiều năm sau.

Trao đổi với đội ngũ Z-SOFT để đánh giá hiện trạng, xác định mục tiêu và lựa chọn kiến trúc phù hợp với định hướng phát triển của doanh nghiệp.

Đặt lịch tư vấn