thumb
2022-12-09 09:36:28.000

Continuous Integration là gì, tại sao bạn cần sử dụng nó?

Mặc dù không phải tất cả mọi dự án đều có thể đạt được thành công lớn, nhưng vẫn có những phương pháp và thói quen có thể giúp tăng đáng kể cơ hội thành công của một dự án và làm cho việc phát triển trở thành một trải nghiệm thoải mái hơn. Một trong những thói quen đó chính là sử dụng Tích hợp liên tục (Continuous Integration - sau đây tôi sẽ gọi ngắn gọn là CI)

Ở bài viết trước Jenskins ta có đề cập đến vấn đề về CI. Vậy hôm nay ta hãy tìm hiểu kỹ về CI

Bài viết này được đăng tại anhben.com, không được copy dưới mọi hình thức.

Mục lục

1. Continuous Integration là gì?

Continuous Integrationlà một thực hành của việc liên tục tích hợp những thay đổi tạo ra với project và test lại nó hàng ngày hoặc thường xuyên hơn.

Tự động hoá việc build, test và deploy của bạn có thể làm giảm bớt nhiều vấn đề đau đầu và thường gặp trong các dự án. Có một phương pháp đáng tin cậy trong việc tích hợp những thay đổi thường xuyên hơn giúp bạn đảm bảo rằng có thể tìm thấy lỗi sớm hơn sau này. Có vấn đề xuất hiện ngay trong ngày demo chỉ vì kết quả của một số phần bạn đã triển khai một vài tháng trước và không có cơ hội thích hợp để kiểm tra các phần khác trong hệ thống của bạn không phải là một điều dễ chịu.

Tất cả chúng ta có thể đồng ý rằng việc để xảy ra vấn đề ngay trong ngày thực hiện việc demo là một trải nghiệm không hề dễ chịu. CI có thể giúp bạn giảm thiểu nó. Rất nhiều.

Chúng ta hãy xem một vòng đời CI cơ bản sẽ trông như thế nào:

xamarin forms jpg

2. Lợi ích của việc sử dụng CI

Sử dụng CI đem lại rất nhiều lợi ích, có thể kể đến như sau:

  • Giảm rủi ro tích hợp: Làm việc trên các dự án có nghĩa là nhiều người đang làm việc trên các task riêng biệt hoặc các phần của mã nguồn. Càng nhiều người, sự tích hợp càng nguy hiểm. Tùy thuộc vào vấn đề thực sự tồi tệ như thế nào, việc sửa lỗi và giải quyết vấn đề có thể thực sự gây ra phiền phức và có thể có nghĩa là có nhiều thay đổi đối với mã nguồn. Thực hiện tích hợp hàng ngày hoặc thậm chí thường xuyên hơn có thể giúp giảm thiểu các loại vấn đề này ở mức tối thiểu.
  • Chất lượng code cao hơn: Không cần phải lo lắng về các vấn đề xảy ra và tập trung nhiều hơn vào các tính năng của hệ thống giúp ta viết ra sản phẩm có chất lượng cao hơn.
  • Code trên version control luôn hoạt động: Nếu bạn commit phần nào đó làm hỏng việc build, bạn và đội của bạn sẽ nhận ra điều này ngay lập tức, và vấnd dề sẽ được giải quyết trước khi ai đó kéo code lỗi về
  • Giảm tranh luận gay gắt giữa các thành viên trong đội: Có một hệ thống khách quan tại chỗ giúp giảm tần suất cãi nhau giữa các thành viên
  • Giúp thành viên kiểm thử đỡ đau đầu hơn: Có nhiều version và build của mã nguồn giúp chia cắt và tìm kiếm bug một cách hiệu quả, giúp công việc của đội kiểm thử dễ dàng hơn.
  • Giảm thời gian deploy: Deploy dự án là một công việc rất nhàm chán và tốn thời gian, và việc tự động hoá quá trình này là rất cần thiết
  • Tăng sự tự tin và tinh thần: Mọi người không làm việc hiệu quả nếu luôn thường trực nỗi sợ làm hỏng cái gì đó, và họ có xu hướng tạo ra kết quả tốt hơn và có thể tập trung năng lượng làm việc hơn nếu không phải lo lắng về những hậu quả có thể xảy ra từ hành động của họ.

3. Yêu cầu

Bạn có thể đang tự hỏi yêu cầu để cài đặt hệ thống CI mà bạn cần là gì. Nếu bạn muốn cài đặt CI server trên môi trường của chính bạn, trước tiên bạn sẽ cần một số thứ.

Yêu cầu đầu tiên là bạn cần có Version Control System (VCS). Điều này là bắt buộc. VCS cung cấp một phương pháp đáng tin cậy để tập trung hoá và bảo tồn những thay đổi mà bạn tạo ra trong dự án theo thời gian.

Nếu bạn sử dụng giải pháp tại chỗ, một yêu cầu khác là bạn phải có một server bổ sung hoặc workstation hoặc ít nhất là một máy ảo. Có một chiếc máy không bị lỗi để cài đặt hệ thống là một trong những điều quan trọng thiết yếu.

Nếu bạn không muốn bị rắc rối với server hay máy ảo, có nhiều giải pháp hosted CI tool giúp đảm bảo sự bảo trì của toàn bộ quy trình và cho phép mở rộng dễ dàng. Điểm yếu của các hệ thống hosted đó là thường thiếu các tuỳ chọn thiết lập trong khi các tool self-hosted có đầy đủ.

Nếu bạn muốn sử dụng tuỳ chọn self-hosted, bạn sẽ cần cài đặt một trong nhiều CI tool có sẵn.

Về mặt kỹ thuật, CI tool không bắt buộc được dùng, cũng giống như IDE không nhất thiết phải có cho việc phát triển phải mềm, nhưng việc implement sẽ khó hơn đáng kể nếu không có một tool như thế.

Những CI tool được biết đến rộng rãi nhất gồm có Jenkins, TeamCity, Bamboo, Go... Bạn có thể tìm hiểu thêm về top các CI tool có sẵn

Share: