Những điều bạn cần biết về mô hình CI/CD và triển khai cơ bản với CircleCI
CircleCI
3
CI
5
White

Tấn Tài Vũ viết ngày 28/04/2020

Đợt tháng 3 vừa rồi, mình có lên kế hoạch tổ chức một buổi seminar nho nhỏ để chia sẻ với các bạn sinh viên về mô hình tích hợp liên tục (continuous integration), gọi một cách ngắn gọn là mô hình CI/CD trong phát triển và triển khai phần mềm. Rất không may là đợt rồi xảy ra dịch Covid-19, khiến các kế hoạch bị hủy bỏ.

Vì không thể tổ chức seminar nên mình đành để tài liệu ở đây và trình bày ngắn gọn nội dung trong bài post này. Hi vọng có thể chia sẻ với mọi người chút kiến thức hữu ích.

Tóm lược nội dung

Ban đầu, mình định tổ chức buổi chia sẻ dạng trình chiếu và tương tác, do đó tài liệu mình soạn ra ở dạng file trình bày (slide). Phần nội dung slide trình bày được để ở mục dưới, trong phần này mình sẽ tóm tắt một vài ý chính trong bài.

Một số ý chính của nội dung chia sẻ:

  • Lý do ra đời của hệ thống tích hợp liên tục: không phải ngẫu nhiên mà người ta nghĩ ra trò CI/CD trong phát triển phần mềm, cái gì cũng có lí do của nó cả.
  • Mô hình hoạt động của một hệ thống CI/CD: khi biết mình gặp vấn đề gì rồi, người ta sẽ nghĩ ra một cách thức nào đó để giải quyết nó, mô hình CI/CD là một trong số đó. Phần này mình cũng đề cập tới một vài lợi ích và sự đánh đổi khi theo đuổi mô hình này.
  • Triển khai CI/CD với CircleCI: Khi đã nghĩ ra được mô hình giải quyết, người ta phải tạo ra công cụ để thực hiện điều đó, và người ta đã tạo ra CircleCI. Lưu ý là: CircleCI chỉ là 1 công cụ để thực hiện mô hình CI/CD, ngoài ra còn nhiều công cụ khác lắm: Jenkins, JavisCI, ...
  • Hướng dẫn và demo triển khai CI với CircleCI

Mình có để link mã nguồn demo CircleCI ở cuối bài, các bạn có thể tham khảo.

Mình thường sử dụng CI/CD trong trường hợp nào

Triển khai liên tục (CD: continuous deployment) là một vấn đề khó, hoặc rất khó. Nó không chỉ liên quan tới cách setup hệ thống, mà còn có thể liên quan tới khách hàng sử dụng, dữ liệu người dùng, downtime khi update, … Vậy nên trong hầu hết trường hợp, mình chỉ sử dụng tích hợp liên tục (CI).

Một số trường hợp có thể dùng CI:

  • Cài đặt các hệ thống kiểm tra coding standards (kiểm tra lint, style, khi làm việc đội nhóm.
  • Thực thi automation test (unit test, configuration test, e2e test, …) mỗi khi source code có sự thay đổi.
  • Đóng gói phần mềm (build file apk, file cài đặt, …)

Nội dung trình bày

Đây là slide nội dung chính về mô hình CI/CD và các khái niệm cơ bản khi triển khai với CircleCI: INTRODUCTION TO CI/CD AND CIRCELCI.

CIrcleCI workflow image

(Rất xin lỗi các bạn vì mình đã để link dẫn tới bài presentation trên Google Docs, nhưng mình không biết cách để embed vào bài viết, bạn nào biết cách thì chỉ mình với nhé. Rất cảm ơn các bạn)

Mã nguồn demo:

  • Chạy CI kiểm tra định dạng mã nguồn với Eslint và Unit test với Jest mỗi khi có sự thay đổi source code: CircleCI experimental project.
  • Chạy CI thực thi unit test với PHPUnit cho project: PHPUnit experiment.

Nếu các bạn thấy hữu ích, đừng ngại ngần mà nhấn sao (Star) trên github cho mình nhé. Hoặc kiến thức mình có điều gì sai, nhờ các bạn chỉ ra cho mình điều đúng hơn với nhé.

Cảm ơn các bạn.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tấn Tài Vũ

15 bài viết.
115 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
38 7
Nguồn: (Link) Nhắc lại về các kiểu dữ liệu trong Javascript, ta có 5 kiểu dữ liệu cơ bản và 1 kiểu dữ liệu phức hợp. 5 kiểu dữ liệu cơ bản bao gồm...
Tấn Tài Vũ viết gần 3 năm trước
38 7
White
35 9
Note: Bài viết nguồn ở đây: (Link) Con trỏ this có lẽ là một khái niệm không mấy xa lạ trong lập trình hướng đối tượng, nó là một thể hiện cho đố...
Tấn Tài Vũ viết gần 3 năm trước
35 9
White
26 5
Mấy hôm nay có dịp ôn lại về HTTPS, mặc dù đã có nhiều tài liệu nói về giao thức này nhưng hầu hết chúng thường được mô tả bằng ngôn ngữ kĩ thuật t...
Tấn Tài Vũ viết 2 năm trước
26 5
Bài viết liên quan
White
5 0
Đây là một trong những bài thuộc series Ship your Elixir app with confidence của mình. Các bài trong series: 1. (Link) 2. (Link) Mở bài Ở (Li...
Cẩm Huỳnh viết gần 3 năm trước
5 0
White
4 2
Bài viết gốc ở blog của mình: https://chienkira.github.io/blog/posts/%C3%A1pd%E1%BB%A5ngcircleci/ Lúc đầu trang blog này mình định deploy bằng tay...
Chiến Kira viết 1 năm trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
15 bài viết.
115 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!