Tham khảo: quy trình Tích hợp liên tục hoạt động như thế nào

Hôm nay chúng ta sẽ xem xét lịch sử của thuật ngữ này, thảo luận về những khó khăn khi triển khai CI và cung cấp một số công cụ phổ biến sẽ giúp bạn làm việc với nó.

Tham khảo: quy trình Tích hợp liên tục hoạt động như thế nào
/flickr/ Altug Karakoc / CC BY / Ảnh đã được chỉnh sửa

kỳ hạn

Tích hợp liên tục là một cách tiếp cận để phát triển ứng dụng bao gồm việc xây dựng dự án và kiểm tra mã thường xuyên.

Mục tiêu là làm cho quá trình tích hợp có thể dự đoán được và phát hiện các lỗi cũng như lỗi tiềm ẩn ở giai đoạn đầu để có nhiều thời gian hơn để sửa chúng.

Thuật ngữ Tích hợp liên tục xuất hiện lần đầu tiên vào năm 1991. Nó được giới thiệu bởi người tạo ra ngôn ngữ UML Grady Butch (Grady Booch). Kỹ sư này đã giới thiệu khái niệm CI như một phần trong quá trình phát triển của chính mình - Phương pháp Booch. Nó ngụ ý sự cải tiến dần dần của kiến ​​trúc khi thiết kế các hệ thống hướng đối tượng. Gradi không mô tả bất kỳ yêu cầu nào về việc tích hợp liên tục. Nhưng sau này trong cuốn sách của ông “Phân tích và thiết kế hướng đối tượng với các ứng dụng“Ông ấy nói rằng mục tiêu của phương pháp này là tăng tốc độ phát hành “các bản phát hành nội bộ”.

Câu chuyện

Năm 1996, CI được những người sáng tạo ra phương pháp này áp dụng lập trình cực đoan (XP) - Kent Beck (Kent Beck) và Ron Jeffries (Ron Jeffries). Tích hợp liên tục đã trở thành một trong mười hai nguyên tắc chính trong cách tiếp cận của họ. Những người sáng lập XP đã làm rõ các yêu cầu đối với phương pháp CI và lưu ý sự cần thiết phải xây dựng dự án nhiều lần trong ngày.

Đầu những năm 2000, một trong những người sáng lập Liên minh Agile bắt đầu thúc đẩy phương pháp tích hợp liên tục Martin Fowler (Martin Fowler). Những thử nghiệm của ông với CI đã dẫn đến sự ra đời của công cụ phần mềm đầu tiên trong lĩnh vực này - CruiseControl. Tiện ích này được tạo ra bởi đồng nghiệp của Martin, Matthew Foemmel.

Chu trình xây dựng trong công cụ này được triển khai dưới dạng một daemon kiểm tra định kỳ hệ thống kiểm soát phiên bản để tìm những thay đổi trong cơ sở mã. Giải pháp có thể được tải xuống ngay hôm nay - nó phân phối bởi theo giấy phép giống BSD.

Với sự ra đời của phần mềm CI, ngày càng có nhiều công ty bắt đầu áp dụng phương pháp này. Theo nghiên cứu của Forrester [trang 5 báo cáo], năm 2009, 86% trong số XNUMX công ty công nghệ được khảo sát đã sử dụng hoặc triển khai các phương pháp CI.

Ngày nay, thực tiễn Tích hợp liên tục được các tổ chức thuộc nhiều ngành khác nhau sử dụng. Năm 2018, một nhà cung cấp đám mây lớn đã thực hiện một cuộc khảo sát giữa các chuyên gia CNTT từ các công ty trong lĩnh vực dịch vụ, giáo dục và tài chính. Trong số sáu nghìn người được hỏi, 58% cho biết họ sử dụng các công cụ và nguyên tắc CI trong công việc của mình.

Làm thế nào nó hoạt động

Tích hợp liên tục dựa trên hai công cụ: hệ thống kiểm soát phiên bản và máy chủ CI. Cái sau có thể là thiết bị vật lý hoặc máy ảo trong môi trường đám mây. Các nhà phát triển tải lên mã mới một hoặc nhiều lần trong ngày. Máy chủ CI tự động sao chép nó với tất cả các phần phụ thuộc và xây dựng nó. Sau đó, nó chạy thử nghiệm tích hợp và đơn vị. Nếu các bài kiểm tra vượt qua thành công, hệ thống CI sẽ triển khai mã.

Sơ đồ quy trình chung có thể được biểu diễn như sau:

Tham khảo: quy trình Tích hợp liên tục hoạt động như thế nào

Phương pháp CI đưa ra một số yêu cầu đối với các nhà phát triển:

  • Khắc phục sự cố ngay lập tức. Nguyên tắc này đến với CI từ việc lập trình cực đoan. Sửa lỗi là ưu tiên hàng đầu của nhà phát triển.
  • Tự động hóa các quy trình. Các nhà phát triển và quản lý phải liên tục tìm kiếm những điểm nghẽn trong quá trình tích hợp và loại bỏ chúng. Ví dụ, thường có điểm nghẽn trong quá trình tích hợp hóa ra thử nghiệm.
  • Tiến hành các cuộc họp thường xuyên nhất có thể. Mỗi ngày một lần để đồng bộ hóa công việc của nhóm.

Khó khăn thực hiện

Vấn đề đầu tiên là chi phí vận hành cao. Ngay cả khi một công ty sử dụng các công cụ CI mở (mà chúng ta sẽ nói sau), công ty đó vẫn sẽ phải chi tiền cho việc hỗ trợ cơ sở hạ tầng. Tuy nhiên, công nghệ đám mây có thể là giải pháp.

Chúng đơn giản hóa việc lắp ráp các cấu hình máy tính ở quy mô khác nhau. Điểm cộng của công ty trả chỉ dành cho các tài nguyên được sử dụng, giúp tiết kiệm cơ sở hạ tầng.

Theo khảo sát [trang 14 Điều], việc tích hợp liên tục sẽ làm tăng tải trọng cho nhân viên công ty (ít nhất là lúc đầu). Họ phải học các công cụ mới và không phải lúc nào đồng nghiệp cũng giúp đỡ trong việc đào tạo. Do đó, bạn phải xử lý các khuôn khổ và dịch vụ mới khi đang di chuyển.

Khó khăn thứ ba là vấn đề tự động hóa. Các tổ chức có số lượng lớn mã kế thừa không được kiểm tra tự động kiểm soát sẽ gặp phải vấn đề này. Điều này dẫn đến thực tế là mã chỉ được viết lại trước khi triển khai đầy đủ CI.

Tham khảo: quy trình Tích hợp liên tục hoạt động như thế nào
/flickr/ họ / CC BY-SA

Ai sử dụng

Những gã khổng lồ CNTT là một trong những người đầu tiên đánh giá cao lợi ích của phương pháp này. Google sử dụng hội nhập liên tục kể từ giữa những năm 2000. CI được triển khai để giải quyết vấn đề chậm trễ trong công cụ tìm kiếm. Tích hợp liên tục giúp phát hiện và giải quyết vấn đề nhanh chóng. Giờ đây CI được tất cả các bộ phận của gã khổng lồ CNTT sử dụng.

Tích hợp liên tục cũng giúp ích cho các công ty nhỏ và các công cụ CI cũng được các tổ chức tài chính và chăm sóc sức khỏe sử dụng. Ví dụ, tại Morningstar, các dịch vụ tích hợp liên tục giúp vá lỗ hổng nhanh hơn 70%. Và nền tảng y tế Philips Healthcare đã có thể tăng gấp đôi tốc độ cập nhật xét nghiệm.

Dụng cụ

Dưới đây là một số công cụ phổ biến cho CI:

  • Jenkins là một trong những hệ thống CI phổ biến nhất. Nó hỗ trợ hơn một nghìn plugin để tích hợp với nhiều VCS, nền tảng đám mây và các dịch vụ khác. Chúng tôi cũng sử dụng Jenkins tại 1cloud: tool được bao gồm trong hệ thống DevOps của chúng tôi. Anh ấy thường xuyên kiểm tra nhánh Git dự định thử nghiệm.
  • Buildbot — một khung Python để viết các quy trình tích hợp liên tục của riêng bạn. Quá trình thiết lập ban đầu của công cụ khá phức tạp, nhưng điều này được bù đắp bằng các tùy chọn tùy chỉnh rộng rãi. Trong số những ưu điểm của khung này, người dùng nêu bật mức độ sử dụng tài nguyên thấp của nó.
  • Phòng chờ CI là một máy chủ của Pivotal sử dụng vùng chứa Docker. Concourse CI tích hợp với mọi công cụ và hệ thống kiểm soát phiên bản. Các nhà phát triển lưu ý rằng hệ thống này phù hợp để làm việc ở các công ty thuộc mọi quy mô.
  • CI Gitlab là một công cụ được tích hợp trong hệ thống kiểm soát phiên bản GitLab. Dịch vụ chạy trên đám mây và sử dụng các tệp YAML để cấu hình. Giống như Concourse, Gitlab CI áp dụng Các vùng chứa Docker giúp tách biệt các quy trình khác nhau với nhau.
  • mật mã là máy chủ CI đám mây hoạt động với GitHub, GitLab và BitBucket. Nền tảng này không yêu cầu quá trình thiết lập ban đầu mất nhiều thời gian - các quy trình CI tiêu chuẩn được cài đặt sẵn đều có sẵn trong Codeship. Đối với các dự án nguồn mở và nhỏ (tối đa 100 bản dựng mỗi tháng), Codeship được cung cấp miễn phí.

Tài liệu từ blog công ty của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét