Câu hỏi Gitlab CI vs Jenkins


Bất cứ ai có thể xin vui lòng cho tôi biết sự khác biệt giữa Jenkins và CI khác như Gitlab-CI, drone.io đến với phân phối GIT là gì. Trong một số nghiên cứu, tôi chỉ có thể đưa ra phiên bản cộng đồng Gitlab không cho phép thêm Jenkins nhưng phiên bản doanh nghiệp Gitlab có. Có sự khác biệt đáng kể nào khác không.


76
2018-05-25 06:34


gốc


GitLab cũng đã cùng nhau so sánh GitLab CI vs Jenkins: about.gitlab.com/comparison/gitlab-vs-jenkins.html - bbodenmiller


Các câu trả lời:


Đây là kinh nghiệm của tôi:

Tại công việc của tôi, chúng tôi quản lý kho của chúng tôi với gitlab ee và chúng tôi có một máy chủ Jenkins (1.6) đang chạy.

Trong cơ sở họ làm khá nhiều như nhau. Họ sẽ chạy một số tập lệnh trên một hình ảnh máy chủ / docker.

TL; DR; 

  • Jenkins dễ sử dụng / học hỏi hơn nhưng có nguy cơ trở thành địa chỉ plugin
  • Jenkins có một GUI (điều này có thể được ưa thích nếu nó phải được accesible / maintainable bởi những người khác)
  • Tích hợp với GitLab ít hơn với Gitlab-ci
  • Jenkins có thể được tách ra khỏi repo của bạn

Hầu hết các máy chủ CI đều khá thẳng về phía trước (concourse.ci, gitlab-ci, vòng tròn-ci, travis-ci, drone.io, gocd và những gì khác có bạn). Chúng cho phép bạn thực thi shell / bat từ định nghĩa tệp yaml. Jenkins có khả năng cắm nhiều hơn và đi kèm với giao diện người dùng. Điều này có thể là một lợi thế hoặc bất lợi, tùy thuộc vào nhu cầu của bạn.

Jenkins là rất cấu hình vì tất cả các plugin có sẵn. Nhược điểm của điều này là máy chủ CI của bạn có thể trở thành một spaghetti của các plugin.

Theo ý kiến ​​của tôi, việc chuỗi và phối hợp các công việc trong Jenkins đơn giản hơn nhiều (vì UI) hơn là thông qua Yaml (gọi các lệnh curl). Bên cạnh đó, Jenkins hỗ trợ các plugin sẽ cài đặt các tệp nhị phân nhất định khi chúng không có sẵn trên máy chủ của bạn (không biết về các phần mềm đó).

Ngày nay (jenkins2 cũng hỗ trợ thêm "ci thích hợp" với Jenkinsfile và pipline plugin mặc định là từ Jenkins 2), nhưng được sử dụng để ít được ghép nối với kho lưu trữ hơn là gitlab ci.

Sử dụng các tệp yaml để xác định đường dẫn xây dựng của bạn (và cuối cùng là chạy shell / bat thuần túy) sẽ sạch hơn.

CHỈNH SỬA: những gì tôi quên đề cập ở đây là các plug-in có sẵn cho Jenkins cho phép bạn hình dung tất cả các loại báo cáo, chẳng hạn như kết quả kiểm tra, vùng phủ sóng và các máy phân tích tĩnh khác. Tất nhiên bạn luôn có thể viết hoặc sử dụng một công cụ để làm điều này cho bạn, nhưng nó chắc chắn là một lợi thế cho Jenkins (đặc biệt là cho các nhà quản lý có xu hướng đánh giá cao các báo cáo này quá nhiều)

EDIT2: Gần đây tôi đã làm việc ngày càng nhiều hơn với Gitlab-ci. Tại Gitlab họ đang làm một công việc thực sự tuyệt vời làm cho toàn bộ trải nghiệm thú vị. Tôi hiểu rằng mọi người sử dụng Jenkins, nhưng khi bạn có Gitlab đang chạy và có sẵn thì thật dễ dàng để bắt đầu với Gitlab-ci. Sẽ không có bất cứ thứ gì tích hợp liền mạch như Gitlab-ci, mặc dù họ đã nỗ lực khá nhiều trong việc tích hợp bên thứ 3.

  • Tài liệu của họ sẽ giúp bạn bắt đầu nhanh chóng
  • ngưỡng để bắt đầu là rất thấp
  • Bảo trì dễ dàng (không có plugin)
  • người chạy xổ số là đơn giản
  • CI hoàn toàn một phần của kho lưu trữ của bạn
  • Công việc / quan điểm của Jenkins có thể lộn xộn

Một số đặc quyền tại thời điểm viết

  • Chỉ hỗ trợ cho một tệp duy nhất, nhưng đó sẽ là đã sửa Sớm

80
2018-05-25 07:08



Jenkins giờ đây có thể có giao diện đẹp hơn nhờ Đại dương xanh - Ayoub Kaanich
Kể từ gitlab 9.3 hỗ trợ đa đường ống đa kênh được thêm vào. Đây là một trong những lý do chính để dính vào Jenkins. Hiện tại tôi đang làm một PoC để kiểm tra xem tôi có thể quản lý với gitlab không, vì họ rõ ràng cũng tập trung vào việc này và họ đang phát triển nhanh hơn nhiều. Bên cạnh đó tôi thực sự yêu thích giao diện người dùng và cách nó phát triển theo thời gian. - Rik
Tốt nhất với các tập tin yaml là, bạn ghi lại các thay đổi của bạn vào đường ống dẫn trực tiếp, nơi nó phải .. trong kho lưu trữ như là một phần của mã nguồn. Vì vậy, bạn có thể có các nhánh với các tệp yaml khác nhau cho các nhánh phát hành khác nhau. Chắc chắn, việc sáp nhập yaml có thể là lộn xộn :) Hình ảnh kết hợp hai piplelines trong jenkins, đó là một công việc khó khăn hơn nhiều. - Christian Müller
jenkins cung cấp nhiều công cụ hơn gitlab ci. gitlab / jenkins Cùng nhau tích hợp là có thể và thực sự minh bạch đối với người dùng nếu cũng đã được giải quyết.thêm hai piplelines trong jenkins rất dễ dàng với Jenkinsfile trong kho lưu trữ của bạn .... bạn sẽ cần gitlab và gitlab source branch plugins - sancelot


Tôi đồng ý với hầu hết các ghi chú của Rik nhưng ý kiến ​​của tôi về đơn giản hơn là mặt đối diện, sự đối nghịch: GitLab đang chứng tỏ là một công cụ tuyệt vời để làm việc cùng.

Hầu hết sức mạnh đến từ khép kín và tích hợp mọi thứ trong cùng một sản phẩm trong cùng một tab trình duyệt: từ trình duyệt kho, bảng phát hành hoặc lịch sử xây dựng cho các công cụ triển khai và giám sát.

Tôi đang sử dụng nó ngay bây giờ để tự động hóa và kiểm tra cách một ứng dụng cài đặt trên các bản phân phối Linux khác nhau và nó chỉ rực nhanh để cấu hình (cố gắng mở một cấu hình công việc Jenkins phức tạp trên firefox và đợi tập lệnh không đáp ứng tăng lên so với cách chỉnh sửa nhẹ .gitlab-ci.yml). Thời gian dành cho việc cấu hình / làm nô lệ nô lệ ít hơn đáng kể nhờ á hậu nhị phân; cộng với thực tế là trong GitLab.com bạn sẽ có được những người chạy được chia sẻ khá tốt và miễn phí.

Jenkins cảm thấy thêm hướng dẫn sau một vài tuần là người sử dụng năng lượng của GitLab CI, ví dụ: sao chép các công việc trên mỗi nhánh, cài đặt các plugin để thực hiện các công việc đơn giản như tải lên SCP. Trường hợp sử dụng duy nhất mà tôi đã gặp phải khi tôi bỏ lỡ nó như hiện nay là khi có nhiều hơn một kho lưu trữ; mà cần phải được tìm ra một cách độc đáo.

Btw, Tôi hiện đang viết một loạt bài về GitLab CI để chứng minh việc cấu hình cơ sở hạ tầng CI kho lưu trữ của bạn không khó đến mức nào. Xuất bản tuần trước, tác phẩm đầu tiên giới thiệu các khái niệm cơ bản, ưu và khuyết điểm và sự khác biệt với các công cụ khác: https://solidgeargroup.com/gitlab_countinuous_integration_intro


34
2018-03-08 13:02



Tôi hoàn toàn đồng ý với bạn về Gitlab. Tại thời điểm viết gitlab thì không hoàn chỉnh như ngày nay. Tôi thích Gitlab như một công cụ rất nhiều, và thực sự đánh giá cao tất cả công việc mà các chàng trai đang đưa vào đó. - Rik
@alfageme: Tôi sẽ kiểm tra Báo cáo của bạn trên trang web được đề cập Dù sao: Nhờ tất cả các giải thích của bạn. Tại thời điểm này, im sẽ quyết định xem chúng ta có sử dụng gitlabCI hay Jenkins cho CI -Stuff của chúng ta hay không. - Max Schindler
@MaxS Bạn đã kết thúc bằng cách nào? - user1870400
@Rik Tôi làm như Gitlab CI tuy nhiên tôi nghe các đối số từ phía bên kia nói rằng nó khó duy trì các tập tin yaml vì không có khả năng sử dụng lại vì nhiều tệp yaml trong một đường ống theo cùng cấu trúc và Templating không được xem là một tùy chọn cao cấp jenkinsfile vì jenkinsfile sử dụng groovy. do đó, đó là tất cả về mã vs cấu hình cho khả năng sử dụng lại. bạn có thể chia sẻ suy nghĩ của bạn về điều này không? - user1870400
@Alfageme - Tôi bắt đầu sử dụng Gitlab CI và di chuyển khỏi Jenkins. Tôi sử dụng nó ngay lập tức để tự động xây dựng, tải lên Nexus, triển khai để DEV env và chạy thử nghiệm đơn vị. Trình tự như vậy được thực hiện ở cấp dự án (tiêu chuẩn). Sau khi DEV tôi cũng cần quản lý triển khai multi-project (Gitlab group). Tôi đã tạo GUI sử dụng Gitlab, API Nexus, v.v. trong đó bạn chọn TAG dự án mới nhất để triển khai và nhóm dự án các thẻ mới nhất cũng được triển khai (ngây thơ). Tôi làm việc trên phần mở rộng để hỗ trợ định nghĩa ma trận phiên bản (projec1v1.1 tương thích với project2v3.2), tôi sẽ yêu cầu một tính năng tại gitlab cho việc này. - kensai