2009-03-02 104 views

Trả lời

36

Như một thời gian dài CruiseControl committer người chưa bao giờ sử dụng Hudson Tôi khá thiên vị, nhưng quan điểm của tôi về nó là:

Hudson là dễ dàng hơn để đứng dậy và chạy (một phần lớn từ một giao diện web đẹp mắt) và có một cộng đồng phát triển plugin rất tích cực.

CruiseControl có hỗ trợ từ rất nhiều 3rd party stuff và có lợi ích của việc thực hiện một số thủ thuật gọn gàng với cấu hình xml như cấu hình sẵn plugin và include.projects cho phép bạn phiên bản thông tin cấu hình với dự án.

Nếu bạn chỉ có một vài bản dựng, tôi nghĩ Hudson là người chiến thắng rõ ràng. Nếu bạn sẽ có rất nhiều - và không nhớ xml - sau đó tôi nghĩ rằng thủ thuật cấu hình xml CruiseControl trở thành một sức mạnh thực sự.

+2

Liên kết cho "công cụ của bên thứ ba" không hoạt động. –

15

Một điểm khác biệt là Hudson là sản phẩm của một trí tuệ thiên tài duy nhất — Kohsuke Kawaguchi. Do đó, nó chắc chắn, mạch lạc và vững chắc. Nhược điểm có thể là một số hạn chế về tốc độ tiến bộ. Tuy nhiên, Kohsuke là cực kỳ sung mãn, vì vậy tôi sẽ không quá lo lắng về điều đó. Và, nó có thể mở rộng, vì vậy nếu có điều gì đó mà Kohsuke không có thời gian (hoặc không muốn), bạn có thể tự mình làm điều đó.

30

Dự án cuối cùng của tôi, chúng tôi bắt đầu trên CruiseControl. Mà rocked. Sau đó, chúng tôi chuyển đến Hudson, thậm chí còn rung chuyển hơn nữa. Những điều tôi thích về Hudson:

  • Dự án thượng nguồn và hạ lưu. Vì vậy, một cam kết mã truy cập dữ liệu của bạn cuối cùng cũng sẽ kích hoạt một bản dựng của lớp trình bày.

  • Dễ dàng sử dụng dự án hiện tại làm điểm bắt đầu của một dự án mới - vì vậy nếu bạn có thói quen tạo chi nhánh phát triển, thì đảm bảo chúng đang được tích hợp liên tục.

+4

+1, hoàn toàn đồng ý, đặc biệt là về điểm thứ hai. Chúng tôi đã kết thúc bằng cách sử dụng Hudson cho rất nhiều thứ vì điều đó (thêm về nó: http://stackoverflow.com/questions/604385/what-is-the-difference-between-hudson-and-cruisecontrol-for- java-projects/888054 # 888054) – Jonik

+1

Về điểm thứ hai của bạn, "[u] s [ing] một dự án hiện có làm điểm bắt đầu cho một dự án mới" cũng dễ dàng với CC: chỉ cần sao chép (các) tệp có liên quan, thực hiện các thay đổi thích hợp và đăng ký dự án mới trong 'ccnet.config'. Khá đơn giản thực sự. "Dễ dàng" trong trường hợp này có thể chỉ là "dễ dàng" nói chung khi xem xét Jenkins trên CC - thực hiện nó trong một GUI so với các tệp XML. TMTOWTDI, nhưng không đặc biệt khó. – J0e3gan

3

Hudson là lựa chọn thân thiện với người dùng hơn trong quan điểm của tôi. Nó có thể được thiết lập và duy trì hoàn toàn thông qua giao diện web (ngoài cài đặt ban đầu của webapp, tất nhiên).

Cách duy nhất có thể nói về CruiseControl là nếu bạn đếm trình soạn thảo tệp XML được tích hợp sẵn.

Tuy nhiên, khi sử dụng cả hai, tôi vẫn muốn bất kỳ ai không có xây dựng tự động.

+0

"Tuy nhiên, khi sử dụng cả hai, tôi muốn bất kỳ ai không có xây dựng tự động." 1 cho một biện pháp của sự tỉnh táo. Giữa tất cả các cơn thịnh nộ và tính tôn giáo cao xung quanh Jenkins của cuối, mọi người thường dường như quên rằng CC, Jenkins, và các lựa chọn thay thế CI trưởng thành khác là _means đến an end_ - cuối cùng cuối cùng là những gì quan trọng hơn phương tiện. Cá nhân, tôi thấy CC dễ sử dụng ngay cả khi một người mới đến tương đối với nó. Jenkins cũng ổn. Nhưng làm cho một thỏa thuận lớn về một so với khác là nhiều ado về IMO không có gì. – J0e3gan

4

Tôi đã xem cả Kiểm soát hành trình và Hudson nhưng chọn Hudson vì việc thiết lập và định cấu hình dễ dàng hơn nhiều. Hudson dường như được sử dụng rộng rãi trong những ngày này với các bản phát hành thường xuyên và rất nhiều extensiblity thông qua các plugin. Tôi rất muốn khuyên bạn điêu đo.

117

Tôi đồng ý với this answer nhưng muốn thêm một vài điểm.

Nói tóm lại, Hudson (Cập nhật: Jenkins) có khả năng lựa chọn tốt hơn bây giờ.Đầu tiên và quan trọng nhất là việc tạo và cấu hình công việc ("dự án" trong từ vựng CC) chỉ là nhanh hơn rất nhiều thông qua giao diện web của Hudson, so với chỉnh sửa tệp cấu hình XML của CruiseControl (mà chúng tôi đã sử dụng để giữ quyền kiểm soát phiên bản) tốt hơn). Cái sau không khó lắm - nó đơn giản là chậm hơn và tẻ nhạt hơn.

CruiseControl là tuyệt vời, nhưng như đã lưu ý trong bài đăng blog được đặt tên khéo léo của Dan Dyer, Why are you still not using Hudson?, nó phải là lần đầu tiên. (Um, giống như nước Anh, nếu bạn sẽ, sau đó vào cuộc cách mạng công nghiệp, khi những người khác bắt đầu vượt qua nó với các công nghệ mới hơn.)

Chúng tôi sử dụng CruiseControl nặng nề và dần dần chuyển sang Hudson, cuối cùng sử dụng nó độc quyền. Và thậm chí nhiều hơn rất nhiều: trong quá trình chúng tôi đã bắt đầu sử dụng máy chủ CI cho nhiều thứ khác so với trước đây, bởi vì việc thiết lập và quản lý công việc Hudson rất tiện dụng. (Hiện tại, chúng tôi có khoảng 40 công việc ở Hudson: công việc thử nghiệm thông thường cho các ngành ổn định và phát triển, các công việc liên quan đến phát hành (công cụ xây dựng, vv); Kiểm tra giao diện người dùng hoặc tích hợp với một phiên bản cơ sở dữ liệu cụ thể, v.v.

Từ kinh nghiệm này, tôi cho rằng ngay cả khi bạn có nhiều bản dựng, bao gồm cả các bản dựng phức tạp, Hudson là một lựa chọn khá an toàn bởi vì, như CC , bạn có thể sử dụng nó để làm mọi thứ, về cơ bản. Chỉ cần cấu hình công việc của bạn để chạy bất kỳ mục tiêu Ant hoặc Maven nào, các kịch bản lệnh shell của Unix hoặc các kịch bản lệnh Windows .bat theo thứ tự bạn muốn.

Đối với công cụ của bên thứ 3 (mentioned here by Jeffrey Fredrick) - đó là một điểm tốt, nhưng ấn tượng của tôi là Hudson nhanh chóng bắt kịp, và đã có số lượng rất lớn plugins available cho nó.

Đối với tôi, hai điều tôi có thể đặt tên mà tôi bỏ lỡ khoảng CruiseControl là:

  1. email cảnh báo của nó về broken builds có nhiều thông tin hơn so với Hudson. Trong hầu hết các trường hợp, nguyên nhân gốc rễ được thể hiện rõ ràng từ thư HTML được định dạng độc đáo của CC, trong khi với Hudson tôi thường cần phải đi theo liên kết đến giao diện người dùng web Hudson và nhấp vào một chút để xem chi tiết.
  2. CruiseControl dashboard phù hợp hơn, ngoài hộp, dưới dạng "information radiator" (hiển thị trên màn hình công cộng hoặc chiếu trên tường để bạn luôn có thể xem nhanh trạng thái của tất cả các dự án). Với trang chủ của Hudson, chúng tôi cần một số thủ thuật Greasemonkey để có được các hàng công việc, tất cả đều xanh lục/đỏ.

Tuyên bố từ chối trách nhiệm nhỏ: Tôi chưa theo dõi dự án CC chặt chẽ trong năm qua. (Tuy nhiên, từ một quick look, nó đã không thay đổi trong bất kỳ cách đầy kịch tính.)

Note (2011/02/03): Hudson đã renamed/forked như Jenkins (bởi Hudson tạo Kohsuke Kawaguchi và những người khác). Dường như Oracle - điều khiển tên Hudson — cũng sẽ giữ "Hudson" xung quanh, nhưng đề xuất cá nhân của tôi là đi với Jenkins, bất kể Oracle nói gì.

+16

Gần 2 năm sau, tôi vẫn đồng ý với mọi thứ tôi đã viết ở trên về Hudson ([giờ được đổi tên thành Jenkins] (http://jenkins-ci.org/content/hudsons-future)). Như là một phụ lục, đây là một số thứ thú vị hơn mà tôi đã sử dụng Hudson cho kể từ đó: Khởi động các trường hợp AWS EC2 mới từ AMI nhất định và triển khai phần mềm mới nhất của chúng tôi có ngay từ kiểm soát phiên bản; Hãy để khách hàng (hiểu biết công nghệ) kiểm soát sự xuất hiện của một ứng dụng demo (bằng cách chỉnh sửa một tệp cấu hình mà ứng dụng sử dụng), và cũng chạy một số hoạt động quản trị nhất định đối với cơ sở dữ liệu được ứng dụng sử dụng (các công việc tham số hữu ích) ... (cont) – Jonik

+1

... Định kỳ kiểm tra xem trang web hoặc dịch vụ có đang hoạt động hay không; Tự động hợp nhất các thay đổi từ thân cây thành tất cả các nhánh công việc ngay sau khi xây dựng thành công thân cây; và vân vân. Điều đáng chú ý là trong hầu hết các trường hợp, Hudson đơn giản chỉ là một ** front-end ** cho một kịch bản shell/Python/etc, hoặc một thay thế "có thể nhìn thấy" cho cronjob. Nhưng sau đó, nó rất tốt cho các mục đích như vậy! Trong một dự án, khách hàng đặc biệt yêu cầu thêm công việc của Hudson cho các hoạt động quản trị/quản lý sau khi tôi đã làm xong; cho các nhu cầu mà họ đã có nó là hoàn toàn phù hợp, và dễ dàng hơn nhiều so với đăng nhập vào một máy chủ để chạy một kịch bản. – Jonik

1

Tôi đã thử kiểm soát Hành trình ... Tốt của nó ... Nhưng tài liệu bị phân mảnh. Bảng điều khiển là khó hiểu. Tạo widget cũng gây nhầm lẫn. Chưa bao giờ thử hudson. Sẽ cố gắng vào cuối tuần.

0

Gần đây tôi đã thiết lập Jenkins để xây dựng các dự án Borland BDS 2006 sử dụng Subversion và tôi rất hài lòng với nó. Tôi chưa bao giờ sử dụng CruiseControl, vì vậy tôi không thể so sánh. Đọc bài đăng trên blog của tôi để biết thêm thông tin.

Continuous integration of Delphi project with Jenkins