Hôm nay cafedev sẽ giới thiệu cho các bạn 5 công cụ CI khá nổi tiếng và được công đồng phát triển phần mềm xài khá nhiều.
Trong tích hợp liên tục, mỗi khi developer hợp nhất các thay đổi mã của mình vào kho lưu trữ, một chuỗi các thử nghiệm được kích hoạt. Điều này giúp họ xác định lỗi ngay lập tức. Khi một commit không có lỗi, thì CI sẽ giao hàng commit đó. Thông thường, quá trình này đòi hỏi sự can thiệp thủ công. Nhưng với các công cụ CI / CD, toàn bộ quá trình kiểm tra đó có thể được tự động hóa cho tới bước release. Mỗi hợp nhất mã mới được tự động kiểm tra và các commit này được đẩy để triển khai hay release cho khách hàng.
Nội dung chính
Vậy công cụ CD / CI nào là tốt nhất?
Thật khó để quyết định bởi vì có rất nhiều lựa chọn ngoài kia, một tìm kiếm Google cho ‘CI / CD’ thì nó cho ra nửa tỷ kết quả! @.@
Chúng tôi đã thực hiện nghiên cứu trên nhiều tài liệu và thực tế từ các công ty khác, cuối cùng chúng tôi cũng chọn và biên soạn ra danh sách 5 công cụ tích hợp liên tục (CI) và phân phối liên tục (CD) hàng đầu (không theo thứ tự cụ thể):
- Jenkins
- TeamCity
- GitLab CI/CD
- CircleCI
- Travis CI
- Drone CI (Special Mention)
Dưới đây, một bản so sánh nhanh về các tính năng quan trọng nhất trong mỗi công cụ CI để bạn có cái nhìn tổng quan trước khi đi tới tìm hiểu sau về từ tool và dùng nó cho dự án của mình một cách hợp lý và hiểu quả nhất:
Jenkins là người chơi lâu đời nhất trong ngành và chiếm thị phần 71%. Với hơn 1 triệu người dùng, sự hỗ trợ của cộng đồng cho công cụ này là rất tốt. Điều tuyệt vời hơn nữa là ngày nay có hơn 1400 plugin có thể phục vụ hầu hết mọi nhu cầu Tích hợp liên tục (CI) / Phân phối liên tục (CD). Và nếu bạn không thể tìm thấy một plugin phù hợp với mình, bạn có thể tự tạo một plugin và chia sẻ nó với cộng đồng.
Jenkins là phù hợp nhất nếu:
- Code của bạn được lưu trữ trong một server riêng của bạn(hosted in-house)
- Bạn muốn có toàn quyền kiểm soát môi trường CI / CD của bạn
- Bạn yêu cầu một máy chủ tại chỗ
- Bạn cần một quy trình công việc có thể tùy biến cao
- Bạn có thể chỉ định một người / nhóm chuyên trách để quản lý và duy trì Jenkins
- Bạn cần một giải pháp tiết kiệm tiền
TeamCity được coi là sự thay thế tốt nhất cho Jenkins. Nó được bảo mật và cung cấp các plugin cực kỳ ổn định. Nó cũng có tích hợp tiện dụng với xUnit và các công cụ bao phủ mã khác. Giống như Jenkins, công cụ này thường được sử dụng cho các dự án Java và .NET.
TeamCity là công cụ dành cho bạn nếu:
- Bạn cần một giải pháp làm việc mà không gặp rắc rối về bảo trì vì thèn này có thể dùng server riêng
- Bạn không thể chỉ định một người / nhóm chuyên trách để quản lý công cụ Tích hợp liên tục (CI) / Phân phối liên tục (CD)
- Bạn yêu cầu hỗ trợ khách hàng nhanh chóng
- Các dự án của bạn được xây dựng trên .NET
- Bạn có nhiều dự án với các cấu hình tương tự nhau, mỗi dự án tiến triển khác nhau
GitLab CI / CD là một công cụ sẵn có mà mọi người dùng GitLab đều có thể sử dụng. Nó cho phép bạn lưu trữ một số tính năng GitLab trên các máy chủ và phân bổ nhãn cho chúng. Điều này cung cấp cho bạn một khu các máy chủ nơi mà bạn có thể xây dựng và phân bổ cho bất kỳ máy chủ nào theo yêu cầu. Điều này cho phép các cơ hội mở rộng quy mô lớn mà các công cụ như Jenkins không cung cấp.
GitLab CI / CD là đặt cược tốt nhất của bạn nếu:
- Code của bạn được lưu trữ trong GitLab
- Bạn muốn outsource DevOps
- Bạn không muốn rắc rối khi thiết lập và cấu hình một công cụ hoàn toàn mới
- Bạn sẽ được hưởng lợi từ tỷ lệ phát hành tính năng ổn định
- Bạn cần một đăng ký tích hơp Docker
- Bạn không cần plugin
CircleCI tự hào về khả năng lưu trữ mạnh mẽ và quy trình làm việc tùy biến cao. Công cụ này dễ dàng để thiết lập và chạy. Nó thậm chí có thể được cấu hình để gửi kết quả trực tiếp đến kênh Slack.
CircleCI nên là lựa chọn của bạn về công cụ CI / CD nếu:
- Bạn cần hỗ trợ sẵn có và song song với việc develop
- Code của bạn được lưu trữ trên GitHub hoặc Bitbucket
- Bạn làm việc trên Linux hoặc MacOS
- Nhóm của bạn bao gồm nhiều nhà phát triển sử dụng chung một Tích hợp liên tục (CI) / Phân phối liên tục (CD)
- Bạn ưu tiên tốc độ hơn tất cả những thứ khác(Build nhanh,…)
- Bạn cần các chung 1 quy trình và quy trình công việc tùy biến cao
Travis CI rất nhanh chóng và đơn giản để thiết lập. Nó tích hợp hoàn hảo với GitHub. Công cụ này khác với CircleCI ở chỗ nó cho phép bạn kiểm tra trên hệ điều hành Mac và Linux cùng một lúc.
Travis CI là sự phù hợp hoàn hảo cho bạn nếu:
- Code của bạn được lưu trữ trên GitHub
- Bạn cần hỗ trợ nhiều ngôn ngữ khác nhau
- Bạn không sử dụng Windows
- Bạn cần một giải pháp linh hoạt
- Bạn cần các máy chủ cơ sở dữ liệu được cài đặt sẵn
- Bạn không yêu cầu nhiều tích hợp của bên thứ ba
Cuối cùng.
Drone là một công cụ gốc container được viết bằng Go. Công cụ này dễ dàng để thiết lập và nâng cấp. Nó có tính năng Autoscaler cho phép bạn tự động tăng hoặc giảm theo yêu cầu. Drone CI cũng hỗ trợ kiến trúc bộ xử lý ARM.
Drone là lựa chọn tốt nhất của bạn nếu:
- Bạn yêu cầu hỗ trợ Docker
- Bạn cần một công cụ dựa trên đám mây
- Bạn cần một công cụ dễ nâng cấp
- Bạn yêu cầu kết nối trực tiếp với GitHub, GitLab, Bitbucket và các nhà cung cấp đám mây như AWS và GCP
Bạn sẽ chọn ai?
Khi bạn chọn đúng công cụ CI / CD, bạn có thể tiến hành DevOps của mình. Nếu được thực hiện chính xác, nó sẽ tăng năng suất đa dạng và cho phép của bạn giao hàng một cách tự tin. Bằng cách phân tích các yêu cầu cho bạn hoặc nhóm của bạn, đó là giá cả, độ phức tạp, tích hợp, nền tảng được hỗ trợ hoặc bất cứ thứ gì khác, bạn sẽ tìm thấy một công cụ giải quyết tất cả các vấn đề của mình. Vâng, nó là có thể.