Top Continuos Intergration Tools 2017

  • Continous Integration (CI) - tích hợp liên tục là một tập quán trong phát triển phần mềm mà ở đó yêu cầu lập trình viên tích hợp source code tren máy local với server chứa source code được chia sẻ với các lập trình viên khác. Việc tích hợp này cần phải diễn ra thường xuyên và càng sớm càng tốt (ASAP). Điều này giúp hạn chế sự khác biệt trong source code trên máy local của các thành viên khác nhau tham gia vào dự án. Đồng thời, nếu như dự án của bạn có sử dụng các công cụ test tự động (automated testing) việc làm này sẽ giúp source code của lập trình viên trở lên đáng tin cậy hơn. Hôm này mình xin giới thiệu với các bạn một số CI tools được sử dụng nhiều và phổ biến nhất trong năm 2017 tính đến thời điểm hiện tại.

1. Jenkins

  • Jenkins là công cụ CI mã nguồn mở được viết bằng Java. Nó có nguồn gốc như là một nhánh của Hudson khi mà Oracle mua Sun Microsystems. - ----- Jenkins là công cụ CI platform và nó cung cấp cấu hình thông qua cả giao diện GUI và các câu lệnh điều khiển.
  • Điều mà làm cho Jenkins rất linh hoạt là tính năng mở rộng thông qua plugin. Danh sách plugin của Jenkins rất rộng và bạn có thể dễ dàng thêm vào dự án của mình. Ngoài khả năng mở rộng, Jenkins tự hào về việc phân phối các bản build và kiểm tra tải trên nhiều máy khác nhau. Nó được phát hành theo giấy phép của MIT, vì vậy nó hoàn toàn free cho việc sử dụng và phân phối.
  • Cloudbees cũng cung cấp giải pháp lưu trữ cho Jenkins trên Cloud.

Đánh giá: Jenkins là một trong những giải pháp tốt nhất hiện cho CI, mạnh mẽ và linh hoạt.

2. TeamCity

  • TeamCity là máy chủ CI thật, đến từ các phòng thí nghiệm của công ty JetBrains. JetBrains đã xây dựng bản quyền trên thị trường phát triền phần mềm trên toàn thế giới, và công cụ của họ giống như WebStorm và ReSharper được các lập trình viên sử dụng phổ biến trên toàn thế giới.
  • TeamCity cung cấp toàn bộ các tính năng trong phiên bản miễn phí của nó, nhưng nó được giới hạn 20 cấu hình và 3 bản build máy chủ. Nếu bạn muốn sử dụng thêm các bản build máy chủ và các xây dựng các cấu hình, bạn cần phải trả tiền để sử dụng.
  • Ngoài ra, TeamCity hoạt động trên nhiều nền tảng khác nhau và có sự hỗ trợ cho rất nhiều các công cụ và framework. Có rất nhiều plugins công khai có sẵn, được phát triển bởi JetBrains và bên thứ ba.
  • Mặc dù là giải pháp dựa trên Java, TeamCity lại cung cấp tốt nhất cho .NET. Ngoài ra còn có các gói doanh nghiệp khác nhau, quy mô theo số lượng cần thiết.

Đánh giá: Đây là giải pháp tổng thể tuyệt vời, nhưng do sự phức tạp và giá cả, nó dường như phù hợp hơn cho nhu cầu của doanh nghiệp.

3. Travis CI

  • Travis CI là một trong những giải pháp lưu trữ lâu đời nhất hiện nay và nó đã giành được sự tin tưởng của nhiều người. Mặc dù phần lớn được biết đến với giải pháp được lưu trữ trên máy chủ, nó cung cấp phiên bản tiền đề trên dưới dạng gói doanh nghiệp.
  • Travis CI là miễn phí cho tất cả các dự án mã nguồn mở được lưu trên trên GitHub và cho 100 bản build đầu tiên khác. Có một vài kế hoạch về việc lựa chọn giá, sự khác biệt chính là số lượng các bản build bạn có thể đồng thời chạy cùng 1 lúc.
  • Các bản build được cấu hình trong file .travis.yml, tất cả các nhiệm vụ build trong file sẽ được thực thi khi chạy. Travis CI hỗ trợ rất nhiều ngôn ngữ khác nhau và là một tài liệu tốt để sao lưu.

Đánh giá: là giải pháp tốt cho cả máy chủ và biến thể On-premises, được rất nhiều team yêu thích và là một tài liệu tốt.

4. Go CD

  • Go là hiện thân mới nhất của Cruise Control từ công ty ThoughtWorks. Ngoại trừ mảng hỗ trợ thương mại mà ThoughtWorks cung cấp, Go hoàn toàn miễn phí. Nó có sẵn cho Windows, Mac và hệ điều hành Linux.
  • Điều làm cho Go nổi bật lên từ đám đông là khái niệm về các pipeline mà làm cho mô hình phức tạp lại xây dựng một cách dễ dàng. Trên khái niệm pipeline, làm thế nào để có thể giúp liên tục và làm thế nào nó so sánh với pipelines Jenkins. Nó được thiết kế từ đầu để hỗ trợ luồng xử lý và loại bỏ các nút thắt xây dựng với việc thực hiện song song của các nhiệm vụ.

Đánh giá: là giải pháp tại chỗ, tuyệt vời cho các kịch bản phức tạp.

5. Bamboo

  • Atlassian là công ty tập trung cung cấp các công cụ cho các nhóm phát triền phần mềm và bạn có thể biết chúng qua các công cụ của họ như JIRA và Bitbucket. Bamboo ban đầu được cung cấp cho cả giải pháp đám mây và On-premises, nhưng vào tháng 5 năm 2016, phiên bản đám mây đã bị ngưng cung cấp trong luồng sử dụng của Bitbucket (có thể truy cập thông qua bảng điều khiển bên trái của tài khoản Bitbucket của bạn).
  • Bamboo được phát triển bởi Docker, luồng xử lý Bitbucket là giải pháp rất hiệu quả và nhanh chóng đang liên tục được phát triển và trở thành người thừa kế xứng đáng cho Bamboo Cloud.
  • Bamboo có thể tự do dùng thử trong 30 ngày, và sau đó, có hai kế hoạch cho các nhóm nhỏ và đang phát triển. Là công cụ của Atlassian, nó còn hỗ trợ cho JIRA và BitBucket và bạn thậm chí có thể import cấu hình Jenkins của bạn vào Bamboo một cách dễ dàng.

Đánh giá: Công cụ CI on-premises hiện nay cung cấp giải pháp Cloud đầu tiên. GIải pháp cloud được thay thế bởi Bitbucket pipelines, công cụ CI cloud hiện đại và nhanh chóng được tích hợp vào Bitbucket. Được dùng thử miễn phí trong 30 ngày và phải trả tiền sau đó.

6. GitLab CI

  • GitLab CI là một phần của dự án mã nguồn mở GitLab, được đưa ra bởi công ty GitLab inc. GitLab được lưu trữ trên GitLab.com, một dịch vụ được lưu trữ miễn phí và cung cấp quản lý kho lưu trữ git chi tiết với các tính năng như kiểm soát truy cập, theo dõi các vấn đề, đánh giá mã code và nhiều hơn nữa.
  • GitLab CI được tích hợp hoàn toàn với Gitlab và nó có thể dễ dàng nối các dự án sử dụng API GitLab. GitLab hoạt động, quá trình build được viết bằng ngôn ngữ Go và có thể chạy trên Windows, Linux, OSX, FreeBSD và Docker.
  • The official Go runner có thể chạy nhiều công việc đồng thời và có hỗ trợ Docker. GitLab CI đi kèm với cả mã nguồn mở GitLab Community Edition và GitLab Enterprise Edition.

Đánh giá: công cụ hiện tại được tổ chức với danh sách các tính năng ấn tượng, cung cấp cả miễn phí và giải pháp mức doanh nghiệp.

7. CircleCI

  • Một đám mây khác đến từ một lưu trữ đám mây khác đến từ công ty này với cùng tên gọi. CircleCI hiện chỉ hỗ trợ GitHub và danh sách các ngôn ngữ bao gồm Java, Ruby/Rails, Python, Node.js, PHP, Haskell và Skala.
  • Điều tách CircleCI ra khỏi các công cụ khác là cách mà họ cung cấp dịch vụ. Khung giá chính của CircleCI là "container". Một container là miễn phí và bạn có thể xây dựng nhiều dự án trên đó khi bạn cần. Khi bạn bắt đầu thêm nhiều thùng chứa (với giá cố định), bạn có thể chọn mức độ song song phù hợp với nhu cầu của bạn.
  • Có 5 mức song song (1x, 4x, 8x, 12x, 16x). Vì vậy, bắt đầu với 16 container, bạn có thể đạt được tối đa song song 16x trên một bản build. Hoặc bạn có thể chạy 4 bản builds trên 16 containers với 4x song song.

Đánh giá: là công cụ CI đám mây linh hoạt, cung cấp song song tới 16x. Thật tuyệt vời nếu bạn cần một cái gì đó được xây dựng nhanh và tiền không phải là một vấn đề :slight_smile:

8. CodeShip

  • Nếu bạn chưa có đủ giải pháp lưu trữ cho đến bây giờ, thì đây là một trong những giải pháp giúp bạn.
  • CodeShip có hai phiên bản khác nhau: Basic và Pro. Phiên bản cơ bản cung cấp dịch vụ tích hợp liên tục bên ngoài hộp nhưng không hỗ trợ dockẻ và mục đích chính của nó là xây dựng các ứng dụng với các luồng công việc thông thường thông qua giao diện người dùng. Phiên bản Pro mang lại sự linh hoạt hơn và hỗ trợ docker.
  • Các phiên bản cơ bản đi kèm trong một số gói trả tiền, trong đó những cái đắt tiền có nhiều sức mạnh song song. Trong phiên bản pro, bạn có thể chọn kiểu thể hiện của bạn và số lượng song song lên đến 20x. Nó có thể đắt một chút, nhưng một số đội có thể cần vì sức mạnh của nó.

Đánh giá: Là giải pháp lưu trữ mạnh với sự hỗ trợ docker, các kế hoạch linh hoạt, phù hợp cho cả nhóm nhỏ và doanh nghiệp.

Có một số lưu ý khi bạn chọn công cụ CI để phù hợp với dự án của bạn:

  • Các giải pháp tại chỗ cung cấp rất nhiều tính linh hoạt của quy trình xây dựng và các artifacts được lưu trữ tại locally. Điều này có hoặc không quan trọng với bạn, nhưng trong một số trường hợp và đối với một số công ty thì nó có thể là bắt buộc.
  • Mặt khác, các giải pháp lưu trữ sẽ không gây rắc rối và khả năng mở rộng vì bạn không cần phần cứng để lưu trữ chúng.
  • Một điều quan trọng khác là việc hỗ trợ Docker. Cuộc cách mạng hóa Docker phân phối ứng dụng và đã trở thành một thứ rất quan trọng mà không nên bỏ qua. Mặc dù phần lớn các công cụ hỗ trợ Docker, một số thì coi nó quan trọng hơn những công cụ khác.
  • Và một khía cạnh cuối cùng và thường bị bỏ quên là giao diện người dùng. Tôi tìm thấy một số công cụ từ danh sách dễ sử dụng hơn những công cụ khác. Bạn không thể nót với ý thức rõ ràng rằng giao diện người dùng không phải là quan trọng bởi vì một trong những vai trò chính của bất kỳ công cụ CI tốt là để làm cho quá trình xây dựng dễ dàng hơn. Nó không nên khó hoặc quá phức tạp.

Trên đây là một số điều giới thiệu cơ bản của mình về các tools CI mà mình được biết, tuy chưa được sử dụng hết nhưng mỗi cái nó cũng có những ưu và nhược điểm riêng. Cùng với một số chú ý ở trên, mong rằng bài viết sẽ giúp các bạn có cái nhìn tổng thể về chúng và có lựa chọn phù hợp về việc sử dụng CI tools với dự án của mình.

Nguồn tài liệu: https://www.code-maze.com/top-8-continuous-integration-tools/