CruiseControl [.Net] vs TeamCity để tích hợp liên tục?


117

Tôi muốn hỏi bạn xem môi trường xây dựng tự động nào tốt hơn, dựa trên kinh nghiệm thực tế. Tôi đang dự định thực hiện một số phát triển .Net và Java, vì vậy tôi muốn có một công cụ hỗ trợ cả hai nền tảng này.

Tôi đã đọc xung quanh và tìm hiểu về CruiseControl.NET , được sử dụng để phát triển stackoverflow và TeamCity với hỗ trợ xây dựng các tác nhân trên các nền tảng hệ điều hành khác nhau và dựa trên các ngôn ngữ lập trình khác nhau. Vì vậy, nếu bạn có một số kinh nghiệm thực tế về cả hai, bạn thích cái nào hơn và tại sao?

Hiện tại, tôi chủ yếu quan tâm đến tính dễ sử dụng và quản lý của công cụ, thực tế là CC là mã nguồn mở ít hơn nhiều và TC là đối tượng được cấp phép tại một số thời điểm khi bạn có nhiều dự án để chạy (bởi vì, tôi cần nó cho một số lượng nhỏ các dự án).

Ngoài ra, nếu có một số công cụ khác đáp ứng những điều được đề cập ở trên và bạn tin rằng nó đáng được đề xuất - hãy đưa nó vào cuộc thảo luận.

Câu trả lời:


111

Tôi đã làm việc trên và với các công cụ Tích hợp liên tục kể từ công cụ tạo ra Cruise Control (phiên bản java). Tôi đã thử gần như tất cả chúng tại một số thời điểm. Tôi chưa bao giờ hạnh phúc hơn khi ở cùng TeamCity. Nó rất đơn giản để thiết lập và vẫn cung cấp rất nhiều năng lượng. Trang thống kê bản dựng hiển thị thời gian xây dựng, số lượng thử nghiệm đơn vị, tỷ lệ vượt qua, v.v. rất hay. Trang chủ dự án của TeamCity cũng rất giá trị. Đối với các dự án .NET đơn giản, bạn chỉ có thể cho TeamCity biết giải pháp ở đâu và các lắp ráp nào có các thử nghiệm và đó là tất cả những gì nó cần (ngoài vị trí điều khiển nguồn). Chúng tôi cũng đã sử dụng một số tập lệnh MSBuild phức tạp với nó và thực hiện xây dựng chuỗi. Tôi cũng đã trải qua hai lần nâng cấp TeamCity và chúng không gây đau đớn.

CruiseControl.NET cũng hoạt động tốt. Việc thiết lập phức tạp hơn nhưng có lịch sử lâu đời hơn nên rất dễ dàng tìm thấy giải pháp trên web. Vì CruiseControl.NET là mã nguồn mở nên bạn cũng có tùy chọn thêm hoặc thay đổi bất kỳ thứ gì bạn thích. Tôi đã sử dụng CruiseControl.NET kể từ khi nó được phát hành và đã viết một số mã ban đầu cho cc.tray (rất may đã được viết lại bởi một người hiểu rõ hơn).

Cruise, từ ThoughtWorks, trông cũng khá ổn nhưng tôi không thấy lý do thuyết phục để tôi chuyển sang. Nếu tôi đang bắt đầu một dự án mới, tôi có thể thử nó, nhưng TeamCity đã làm rất tốt khi biến những thứ đơn giản trở nên đơn giản trong khi biến những thứ phức tạp trở nên khá khó khăn.

Chỉnh sửa: Chúng tôi vừa nâng cấp lên TeamCity 5.0 cách đây vài tuần và đó là một bản nâng cấp không đau khác. Nó cho phép chúng tôi tận dụng khả năng bao phủ mã được cải thiện và hỗ trợ GIT. Chúng tôi hiện cũng đang sử dụng bản dựng cá nhân và các tính năng cam kết được thử nghiệm trước đã có trong một thời gian. Tôi chỉ nghĩ rằng tôi nên cập nhật câu trả lời để chỉ ra rằng TeamCity tiếp tục cải thiện và vẫn dễ sử dụng.


tự hỏi liệu với tất cả kinh nghiệm của mình, bạn có thể chia sẻ một chút về cách tạo một dự án .NET đơn giản trên đó và làm việc với TeamCity (sử dụng JING (phát màn hình miễn phí) hoặc công cụ khác) và đăng liên kết ở đây hoặc nơi nào đó để tôi và tất cả chúng ta đấu tranh với nó sẽ có một khởi nghiệp tốt :) Cảm ơn bạn.
balexandre

2
@balexandre - Tôi thấy tài liệu về thành phố của đội khá tốt. Và câu trả lời của @ boj đã cung cấp một liên kết đến một màn hình tốt được diễn ra tại đây blog.wekeroad.com/kona/kona-2
Mike Two 2

Tôi luôn sợ hãi CI vì hình ảnh của CCNet mà tôi có, tuần trước tôi đã thử TeamCity 6.5 và đó là một niềm vui tuyệt đối. không chạm vào một tệp xml / cấu hình.
kay.one

1
Nếu bạn hiện đang sử dụng CC.Net và bạn muốn chuyển đến Team City, có đau không? TC sản xuất tệp MSI như thế nào?
Wes

@ Vâng, tôi không biết liệu điều này có còn phù hợp với bạn hay không, nhưng chúng tôi có hơn 20 dự án đang chạy trong CC.Net, nhưng gần đây tôi đã triển khai TeamCity cho một số dự án Android mà chúng tôi có. Nỗi đau lớn nhất cho đến nay là học Ant, nhưng đó là điều mà tôi sẽ phải làm nếu tôi đưa các dự án vào CC.Net. Tôi sẽ rất vui khi chuyển tất cả các dự án của chúng tôi vào TeamCity nếu tôi có thể thuyết phục ban quản lý trả tiền cho các cấu hình xây dựng bổ sung mà chúng tôi cần (hoàn toàn miễn phí), chủ yếu là do cấu hình, điều này thật dễ dàng trong TeamCity và một vũng lầy XML trong CC. Mạng lưới.
johnc

33

Tôi đã / Tôi là một fan hâm mộ lớn của CC.NET. Chúng tôi hiện có 5 dự án trong CruiseControl và hoạt động rất tốt. Viết các tập tin cấu hình bằng tay có thể khó khăn nhưng không sao.

Nhưng .

Sau màn hình Kona: Tích hợp liên tục và Kiểm tra đơn vị tốt hơn (1/3 đầu tiên về TeamCity), tôi cũng sẽ kiểm tra TeamCity. Tôi thích bảng điều khiển thử nghiệm đơn vị tích hợp và giao diện cấu hình.

Tôi nghĩ mọi người nên xem video này trước khi chọn CC.NET hoặc TeamCity.

ps: Tôi hy vọng cũng có một video CC.NET có giá trị trên mạng.


15

Máy chủ CI yêu thích của tôi cho đến nay là Hudson. Dễ thiết lập và duy trì, nhiều biểu đồ đẹp để hiển thị xu hướng cho các nhà phát triển và những người không phải là nhà phát triển và miễn phí.

Tôi đang sử dụng TeamCity hiện tại trong một dự án và nhìn chung tôi hài lòng với nó, nhưng nhiều biểu đồ mà nó tạo ra không đặc biệt hữu ích và việc cấu hình phức tạp hơn Hudson.

Điều đó nói rằng, TeamCity mạnh mẽ, miễn phí cho nhiều mục đích sử dụng và có một tính năng tuyệt vời: Chạy từ xa. Bạn có thể "cam kết trước" đăng ký của mình trực tiếp từ IDEA hoặc Eclipse, chạy một hoặc nhiều cấu hình bản dựng trên máy chủ TeamCity và chỉ cam kết các thay đổi nếu bản dựng thành công (ví dụ: biên dịch và tất cả các thử nghiệm đều vượt qua).

Cho rằng bạn có thể khởi động cả TeamCity và Hudson và chạy trong vài giờ, bạn có thể nghĩ đến cả hai và chạy chúng song song với nhau (chẳng hạn như CruiseControl). Nếu bạn không thể nhanh chóng khởi động máy chủ CI để thực hiện so sánh song song, thì ít nhất bạn có một điểm dữ liệu để dễ dàng cài đặt và / hoặc cấu hình.


6
+1 cho Hudson. Xem thêm: sử dụng Hudson làm công cụ xây dựng .NET: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/…
Jonik

12

Tôi đã sử dụng cả hai thành công trong các dự án khác nhau. Từ quan điểm thiết lập và hành chính, Team City dễ giải quyết hơn nhiều. Bạn không cần phải sử dụng tệp .config như khi làm với CC và việc thiết lập thật dễ dàng. Vì bạn không có nhiều dự án nên tôi muốn giới thiệu Team City thay vì CC cho đến khi bạn đạt được mức giá $ $$.


12

Tôi đã sử dụng cả CC.net và TeamCity. Tôi được giao nhiệm vụ thiết lập và cài đặt TeamCity cho tổ chức của mình (5 nhà phát triển). Tổ chức của chúng tôi sử dụng một số phương pháp và công cụ không phổ biến (ít nhất là đối với các tổ chức có quy mô của chúng tôi), chẳng hạn như Perforce để kiểm soát nguồn và nhiều tác nhân xây dựng chạy trên các hệ điều hành không đồng nhất, điều này gây ra một số đau đầu khi thiết lập ban đầu. Tuy nhiên, hỗ trợ qua email là hoàn toàn hàng đầu trong việc thiết lập mọi thứ. Tôi đã nhận được câu trả lời cho những câu hỏi ngớ ngẩn của mình chỉ trong vài phút.

Giao diện trực quan và nhanh nhạy, cũng như có nhiều tính năng. Sản phẩm cảm thấy rất đắt tiền. Cấu hình dễ dàng và giao diện web đủ thông minh để tự cập nhật mà không cần khởi động lại dịch vụ tác nhân hoặc máy chủ, hoặc thậm chí làm mới trang.

Tôi cảm thấy như chúng tôi đang sử dụng mọi tính năng nâng cao của sản phẩm và không tìm thấy lỗi nào cho đến nay. Tích hợp Ndepend, tập lệnh NAnt lồng nhau, gắn nhãn phiên bản Perforce, bạn đặt tên cho nó, chúng tôi đang làm việc đó.

Tôi thực sự giới thiệu TeamCity cho bất kỳ ai đang tìm kiếm một máy chủ tích hợp liên tục hoặc bất kỳ máy chủ xây dựng nào.


Perforce là một công cụ không được giới thiệu? Perforce là tuyệt vời cho các đội ở mọi quy mô. Tôi sử dụng nó bản thân mình cho nhà phát triển của tôi :)
sonstabo

@sonstabo, tôi đồng ý với điều đó, hầu hết các công ty nhỏ sử dụng SVN hoặc GIT và Perforce chủ yếu được sử dụng tại các công ty lớn hơn. Tôi đã sử dụng Perforce và thích nó nhưng tôi đã ở một công ty 1.000 nhà phát triển khi sử dụng nó.
Samuel Neff

3

Mà không muốn ném các công cụ thay thế vào bạn :-)

Hudson là một giải pháp thay thế mã nguồn mở tuyệt vời, tôi đã sử dụng CC và CC.net, và thú thực là tôi nghĩ chúng là những công cụ tuyệt vời. Tôi đang cân nhắc chuyển sang hudson vì nó có vẻ dễ thiết lập và bảo trì hơn rất nhiều.

https://hudson.dev.java.net/


1
+1 Dường như không ai nghĩ về Hudson cho .Net CI. Tôi đã sử dụng Cruise Control, Team City và Bamboo, và nhận thấy Hudson là công cụ tốt nhất cho công việc trong hầu hết các trường hợp khi ngân sách là mối quan tâm lớn.
Dan Rigby

3

Đảm bảo hệ thống mà bạn quyết định dựa trên số lượng dự án mà bạn sẽ cần nó để xử lý ...

Tôi sử dụng CruiseControl.Net nhưng tôi sẽ không khuyên dùng nó để xây dựng nhiều dự án ... Tôi có một cách sắp xếp (có thể hơi kỳ lạ) trong đó tôi có nhiều thư viện tĩnh C ++ mà tôi soạn thành các ứng dụng. Mỗi thư viện phụ thuộc vào các thư viện khác và các ứng dụng lấy một tập hợp các lib và bản dựng. Mỗi lib có một bộ thử nghiệm. Mỗi ứng dụng có một bộ thử nghiệm. Tôi xây dựng cho 5 trình biên dịch và các biến thể của nền tảng (cửa sổ).

Điều đầu tiên tôi nhận thấy là trình kích hoạt dự án của CC.Net không thực sự hoàn toàn như những gì bạn cần và trình kích hoạt đa năng không hoạt động tốt với trình kích hoạt dự án. Cách thức hoạt động của trình kích hoạt dự án (chúng sử dụng Remoting để kết nối với máy chủ nơi dự án được lưu trữ (ngay cả khi đó là dự án được quản lý bởi cùng một phiên bản CC.Net) và sau đó kéo tất cả các dự án từ máy chủ đó và tìm kiếm danh sách theo tuần tự tìm kiếm dự án mà bạn quan tâm ...) có nghĩa là họ không mở rộng quy mô tốt. Khi bạn vượt qua một số dự án nhất định, bạn sẽ thấy rằng CC.Net đang sử dụng phần lớn CPU cho máy xây dựng của bạn.

Tất nhiên, nó là mã nguồn mở, vì vậy bạn có thể sửa nó ... Và, tôi chắc chắn rằng nó ổn đối với một số lượng nhỏ các dự án không phụ thuộc lẫn nhau.

Để biết thêm chi tiết về các sự cố tôi gặp phải và một số bản vá cho CC.Net, hãy xem tại đây http://www.lenholgate.com/archives/cat_ccnet.html


oh ... cảm ơn vì thông tin này, bài viết có giá trị. đặc biệt là khi nói rằng TC là một thiết lập đơn giản và hạn chế của nó là số lượng dự án, nơi CC & CC.Net có thể phát huy tác dụng. nhưng như bạn nói, nó được thành vấn đề khi đếm dự án tăng ... nhờ một lần nữa
zappan

Ngay cả trong phiên bản CC.Net bị tấn công nặng nề của mình, tôi cũng gặp sự cố vì CC.Net sử dụng phương pháp tiếp cận luồng cho mỗi dự án để lập lịch và, đó chỉ là một IMHO thiết kế tào lao.
Len Holgate 21/10/08

2

Gần đây tôi đã thiết lập cc .net. Nó là một ứng dụng tuyệt vời nhưng đòi hỏi một chút kiên nhẫn. Bạn sẽ chỉnh sửa các tệp cấu hình trong notepad rất nhiều :)

Nó đã xuất hiện được một thời gian nên nó được hỗ trợ tốt và bạn thường có thể tìm thấy ai đó đã làm những gì bạn muốn trước đây. Giao diện web là .net cũng là một điểm cộng cho chúng tôi vì chúng tôi là một cửa hàng của Microsoft.

Tôi chưa từng sử dụng TeamCity nhưng tôi đã nghe khá nhiều khuyến nghị về nó và nó trông khá đẹp.


2

Tôi đã có kinh nghiệm thiết lập và chạy CruiseControl (phiên bản Java) trên Linux trong công ty trước đây của tôi. Giống như hầu hết mọi người đề xuất, nó không phải là điều nhỏ nhặt nhất để thiết lập. Bạn cần hiểu khung của nó để đưa ra cấu hình khả thi / quản lý được. Tuy nhiên, khi bạn đã vượt qua cái bướu đó, tôi cảm thấy CruiseControl khá linh hoạt để cho phép bạn làm nhiều việc khác nhau để phù hợp với các tình huống khác nhau.

Bên cạnh đó, tài liệu CruiseControl, trang wiki của nó cũng có một số thông tin hữu ích.

Tôi không có kinh nghiệm trực tiếp với TeamCity. Mặc dù tính năng cam kết trước thử nghiệm của nó trông đủ thú vị.

Một công cụ CC khác mà bạn có thể thử là Bamboo của Atlassian. Nó dễ thiết lập hơn rất nhiều và giao diện đẹp hơn. Mặc dù vậy, nó không linh hoạt như những gì CruiseControl cung cấp.


1

Một lựa chọn thứ ba mà bạn có thể muốn xem xét: Du thuyền của Thoughtworks. Nó được xây dựng trên CruiseControl, nhưng cung cấp nhiều tính năng hơn, thiết lập dễ dàng hơn, v.v. Không miễn phí (hoặc mã nguồn mở).

http://studios.thoughtworks.com/cruise-continuous-integration


1
Tôi đã xem xét Cruise một vài lần khi thiết lập như một hệ thống CI. nó không đơn giản hơn nhiều so với ví dụ CC.NET. Nó có những điểm mạnh của mình trong xây dựng và triển khai chảy nhưng như một công cụ CI i điều TeamCity có thẩm quyền nhiều hơn nữa
haqwin

Nếu bạn định trả tiền cho Cruise / Go, bạn cũng có thể nhận được TeamCity miễn phí.
Niall Connaughton

0

Tôi đã sử dụng Teamcity trong 1 năm rưỡi qua và có một trải nghiệm tuyệt vời. Tôi đã tích hợp một số dự án .Net và Java và sử dụng các công cụ như MSBuild, Maven, v.v. Tôi thấy Teamcity khá đơn giản để thiết lập và làm việc. Tôi đã quản lý để CI chạy cho một số dự án sql cũng là một cơn ác mộng có thể tồi tệ hơn với các công cụ CI khác.
Gần đây đã nâng cấp lên Teamcity 8.0.6 mà không gây đau đớn. Teamcity cũng cung cấp API REST rất hữu ích cho một số trường hợp. Nếu bạn đang sử dụng powershell để tự động hóa các bản dựng, một số tập lệnh tích hợp Psake / Teamcity có sẵn trên GitHub

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.