Hướng dẫn

CI/CD là gì? Tích hợp liên tục và triển khai liên tục giải thích đơn giản

CI/CD là một cách đưa phần mềm ra người dùng, trong đó mỗi thay đổi code được tự động build, kiểm thử và, nếu vượt qua, được chuẩn bị để phát hành hoặc phát hành luôn. CI (continuous integration - tích hợp liên tục) nghĩa là các thay đổi được gộp thường xuyên và được kiểm tra bằng kiểm thử tự động mỗi lần. CD (continuous delivery hoặc deployment - giao hàng hoặc triển khai liên tục) nghĩa là những thay đổi đạt yêu cầu được đóng gói và đưa tới người dùng với rất ít hoặc không có thao tác thủ công.

Mục đích rất đơn giản: phát hiện lỗi trong vài phút sau khi nó được tạo ra, thay vì vài tuần sau khi khách hàng tự tìm thấy.

Vì sao CI/CD quan trọng khi bạn xây dựng bằng AI

Các công cụ xây dựng bằng AI thay đổi code rất nhanh. Chỉ một prompt có thể tác động tới mười tệp. Tốc độ đó rất tuyệt, cho đến khi một thay đổi ở trang thanh toán âm thầm làm hỏng trang đăng nhập và không ai nhận ra cho đến khi một người dùng gửi email cho bạn.

CI/CD chính là tấm lưới an toàn cho đúng tình huống này. Thay vì tin rằng mỗi thay đổi đều ổn, pipeline chạy cùng một bộ kiểm tra mỗi lần:

  • Ứng dụng có còn build được mà không có lỗi không?
  • Các kiểm thử tự động có còn vượt qua không?
  • Code có tuân theo quy tắc của dự án không (kiểu dữ liệu, định dạng, kiểm tra bảo mật)?

Nếu bất kỳ kiểm tra nào thất bại, thay đổi bị dừng lại trước khi đến người dùng. Code thay đổi càng nhanh, một lần kiểm tra không bao giờ mệt mỏi hay bỏ sót bước nào càng có giá trị.

Một ví dụ đời thường

Hãy hình dung một tiệm bánh mỗi sáng bán bánh mì cho các cửa hàng.

  • Không có CI/CD, mỗi thợ làm bánh tự chỉnh công thức trong cả tuần, rồi đến tối thứ sáu mọi người gộp lại và hy vọng bánh vẫn nở. Khi bánh không nở, không ai biết thay đổi của ai gây ra.
  • Có CI, mỗi thay đổi nhỏ trong công thức được nướng thử ngay lập tức và kiểm tra: mùi vị, trọng lượng, hình dáng. Thay đổi xấu bị phát hiện trong cùng ngày, và bạn biết chính xác đó là thay đổi nào.
  • Có CD, những ổ bánh qua kiểm tra được đưa thẳng lên xe giao hàng, được đóng gói và dán nhãn giống nhau mỗi lần, thay vì có người đóng hộp bằng tay lúc 5 giờ sáng.

Việc kiểm tra không làm cho thợ làm bánh giỏi hơn. Nó làm cho các lỗi của họ trở nên rẻ hơn.

Pipeline CI/CD hoạt động như thế nào

Pipeline là một danh sách các bước mà dịch vụ CI/CD tự động chạy khi có một sự kiện xảy ra, thường là khi ai đó đẩy code lên một kho lưu trữ như GitHub. Một pipeline điển hình trông như sau:

BướcĐiều gì xảy raBắt được gì
1. Kích hoạtCode được đẩy lên hoặc một pull request được mở—
2. Cài đặtMột máy mới tải code và các phụ thuộc của nóGói bị thiếu hoặc hỏng
3. BuildỨng dụng được biên dịch hoặc đóng góiLỗi cú pháp và kiểu dữ liệu, import bị hỏng
4. Kiểm thửCác kiểm thử tự động chạyTính năng không còn hoạt động
5. Kiểm traLint, định dạng, quét bảo mậtVấn đề về phong cách, gói có lỗ hổng đã biết, khóa bị rò rỉ
6. Triển khai lên stagingỨng dụng được đưa lên bản sao thử nghiệm của hệ thống thậtVấn đề chỉ xuất hiện trong môi trường thực
7. Triển khai lên productionỨng dụng được phát hành — tự động hoặc sau khi được phê duyệt—

Mỗi bước chạy trên một máy sạch, không phải laptop của ai đó, nên lý do "trên máy tôi vẫn chạy" không còn đứng vững. Nếu một bước thất bại, pipeline dừng lại và báo cho người đã thực hiện thay đổi.

Các bước được định nghĩa trong một file cấu hình nằm cùng với code. Ví dụ trong GitHub Actions, đó là một file YAML trong thư mục .github/workflows của kho lưu trữ.

Giao hàng liên tục so với triển khai liên tục

Chữ "CD" có thể gây nhầm lẫn, và người ta dùng theo cả hai nghĩa:

Giao hàng liên tụcTriển khai liên tục
Kiểm thử chạy tự độngCóCó
Đóng gói bản phát hành tự độngCóCó
Tự động lên hệ thống thậtKhông — một người nhấn "phát hành"Có — mọi thay đổi vượt qua đều được đưa lên
Phù hợp vớiHầu hết các nhóm nhỏ, ứng dụng có người dùng trả phíCác nhóm có độ phủ kiểm thử tốt và giám sát

Triển khai liên tục chỉ hoạt động tốt khi kiểm thử tốt. Nếu kiểm thử của bạn không bao phủ thanh toán, triển khai liên tục sẽ vui vẻ đưa một trang thanh toán bị hỏng lên hệ thống thật.

Ví dụ minh họa: ứng dụng đặt lịch với pipeline

Giả sử bạn có một ứng dụng đặt lịch tiệm làm đẹp, và code của nó nằm trong một kho GitHub. Bạn yêu cầu một công cụ xây dựng bằng AI "thêm giảm giá 10% cho khách hàng lần đầu".

  1. Thay đổi được đẩy lên một nhánh mới và một pull request được mở.
  2. Pipeline bắt đầu. Nó cài đặt các gói và build ứng dụng — bước này đạt.
  3. Nó chạy các kiểm thử. Một kiểm thử, "khách hàng quay lại trả giá đầy đủ", thất bại: giảm giá đang được áp dụng cho tất cả mọi người.
  4. Pull request hiển thị dấu chéo đỏ. Thay đổi không thể được gộp.
  5. Bạn yêu cầu AI sửa lỗi. Nó đẩy một bản sửa; pipeline chạy lại và mọi thứ đều đạt.
  6. Thay đổi được gộp. Pipeline triển khai nó lên một môi trường staging, nơi bạn thử một lịch đặt thử nghiệm.
  7. Bạn phê duyệt, và nó được triển khai lên production.

Nếu không có pipeline, lỗi ở bước 3 sẽ xảy ra ngay trong ví tiền của khách hàng.

Thuật ngữ quan trọng

Thuật ngữÝ nghĩa
PipelineChuỗi các bước tự động chạy trên mỗi thay đổi.
BuildBiến mã nguồn thành thứ có thể chạy được.
Kiểm thử tự độngĐoạn code kiểm tra xem code khác có làm đúng việc của nó không.
Pull request (PR)Một đề xuất thay đổi để người khác (và pipeline) xem xét trước khi gộp. Xem GitHub là gì.
Branch (nhánh)Một dòng thay đổi riêng biệt, để công việc đang làm không ảnh hưởng tới code chính.
StagingBản sao riêng tư của ứng dụng, phản chiếu hệ thống thật, để kiểm tra thay đổi trước khi người dùng thấy.
ProductionỨng dụng đang hoạt động mà người dùng sử dụng.
Rollback (khôi phục)Quay lại phiên bản hoạt động trước đó khi một bản phát hành gặp lỗi.
Build xanh / đỏMột lần chạy pipeline đã đạt / đã thất bại.

Những hiểu lầm thường gặp

  • "CI/CD nghĩa là ứng dụng của tôi đã được kiểm thử." Pipeline chỉ chạy những kiểm thử bạn có. Nếu không có kiểm thử nào, CI chỉ chứng minh rằng ứng dụng build được — không hơn. Hãy yêu cầu AI viết kiểm thử cho các luồng quan trọng nhất.
  • "CI/CD chỉ dành cho công ty lớn." Các công cụ có sẵn như GitHub Actions chỉ cần một file cấu hình ngắn để thiết lập, và các nhóm nhỏ dùng chúng thường xuyên. Phần tốn công sức là kiểm thử, không phải công cụ.
  • "Triển khai tự động nghĩa là không ai kiểm tra gì cả." Pipeline tốt thêm các bước kiểm tra, không bỏ đi. Nhiều nhóm vẫn giữ một bước phê duyệt của con người trước khi lên production.
  • "Nếu pipeline báo xanh, ứng dụng hoạt động." Điều đó chỉ có nghĩa là các kiểm tra tự động đã đạt. Bạn vẫn nên tự thử thay đổi, lý tưởng nhất là trên bản xem trước hoặc staging.
  • "CI/CD thay thế được sao lưu." Không. Một migration cơ sở dữ liệu xấu nhưng vẫn vượt qua kiểm thử vẫn có thể làm hỏng dữ liệu thật. Hãy giữ bản sao lưu và cách khôi phục.

Nên yêu cầu công cụ xây dựng AI của bạn điều gì

  • "Viết kiểm thử tự động cho đăng ký, đăng nhập và thanh toán, và chỉ cho tôi cách chạy chúng."
  • "Thiết lập một workflow GitHub Actions cài đặt các phụ thuộc, build ứng dụng và chạy kiểm thử trên mọi pull request."
  • "Thêm kiểm tra kiểu dữ liệu và linter vào pipeline, và làm cho nó thất bại khi có lỗi."
  • "Giải thích bằng tiếng Việt đơn giản mỗi bước của pipeline làm gì."
  • "Điều gì xảy ra nếu một lần triển khai thất bại giữa chừng? Tôi khôi phục bằng cách nào?"
  • "Kiểm tra xem có khóa bí mật nào được viết cứng trong kho lưu trữ hoặc in ra trong log pipeline không."

Nếu ứng dụng của bạn dùng API key, pipeline cũng cần chúng — được lưu dưới dạng secret mã hóa trong công cụ CI, không bao giờ nằm trong file cấu hình. Xem biến môi trường và secret.

CI/CD và Mythex

Mythex không chạy pipeline CI cho bạn, nhưng bao phủ một số nhu cầu tương tự theo cách riêng:

  • Điểm kiểm tra (checkpoint). Sau mỗi lượt làm việc thành công của tác tử, Mythex lưu một checkpoint git, và Revert to this point (quay lại điểm này) sẽ khôi phục dự án nếu một thay đổi đi sai. Xem Chat.
  • App Testing. Gõ /test và tác tử sẽ thao tác trên bản xem trước trực tiếp của bạn như một người dùng và báo cáo các luồng bị lỗi — hữu ích trước mỗi lần xuất bản. Xem App Testing.
  • Xuất bản là một bước có chủ đích. Thay đổi xuất hiện trước trong bản xem trước riêng tư; ứng dụng công khai của bạn chỉ cập nhật khi bạn xuất bản lại — gần với giao hàng liên tục hơn là triển khai liên tục.
  • Đồng bộ GitHub (Pro). Đồng bộ dự án với một kho GitHub và bạn có thể thêm các workflow GitHub Actions của riêng mình để chạy kiểm thử trên mỗi lần đẩy code. Xem GitHub và xuất dữ liệu.

Để có danh sách những gì nên kiểm tra bằng tay trước khi ra mắt, xem cách kiểm thử ứng dụng trước khi ra mắt, và để làm việc với quản lý phiên bản, xem cách dùng Git với ứng dụng xây bằng AI.

Câu hỏi thường gặp

CI/CD là viết tắt của gì?

CI là tích hợp liên tục (continuous integration): mỗi thay đổi code được gộp thường xuyên và tự động được build và kiểm thử. CD là giao hàng liên tục (continuous delivery) hoặc triển khai liên tục (continuous deployment): các thay đổi vượt qua kiểm thử được tự động chuẩn bị để phát hành (delivery), hoặc được đưa tới người dùng mà không cần bước thủ công nào (deployment).

Giao hàng liên tục khác triển khai liên tục như thế nào?

Với giao hàng liên tục, mọi thay đổi vượt qua pipeline đều sẵn sàng để phát hành, nhưng một người vẫn quyết định khi nào đưa nó lên hệ thống thật. Với triển khai liên tục, mọi thay đổi vượt qua đều tự động lên hệ thống thật, không cần người phê duyệt.

Ứng dụng nhỏ xây bằng AI có cần CI/CD không?

Không cần ngay từ ngày đầu. Một ứng dụng nhỏ với vài người dùng có thể ổn với việc thử nghiệm trên bản xem trước và xuất bản bằng tay. CI/CD phát huy giá trị khi có nhiều người cùng sửa code, khi khách hàng thật phụ thuộc vào ứng dụng, hoặc khi bạn liên tục làm hỏng những thứ từng hoạt động bình thường.

Những công cụ nào được dùng cho CI/CD?

Các công cụ phổ biến gồm GitHub Actions, GitLab CI/CD, CircleCI và Jenkins, cùng với các pipeline triển khai tích hợp sẵn của nền tảng hosting. Chúng đều làm chung một việc cơ bản: tự động chạy một danh sách các bước mỗi khi code thay đổi.

Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو 简体中文 繁體中文(香港) 繁體中文(台灣)