CruiseControl [.Net] vs TeamCity untuk integrasi berkelanjutan?

117

Saya ingin bertanya kepada Anda lingkungan bentukan otomatis mana yang Anda anggap lebih baik, berdasarkan pengalaman praktis. Saya berencana melakukan beberapa .Net dan beberapa pengembangan Java, jadi saya ingin memiliki alat yang mendukung kedua platform ini.

Saya telah membaca dan mengetahui tentang CruiseControl.NET , yang digunakan pada pengembangan stackoverflow, dan TeamCity dengan dukungannya untuk agen build pada platform OS yang berbeda dan berdasarkan bahasa pemrograman yang berbeda. Jadi, jika Anda memiliki pengalaman praktis tentang keduanya, mana yang Anda sukai dan mengapa?

Saat ini, saya sangat tertarik dengan kemudahan penggunaan dan pengelolaan alat, apalagi CC adalah open source, dan TC tunduk pada lisensi di beberapa titik ketika Anda memiliki banyak proyek untuk dijalankan (karena, saya membutuhkannya untuk sejumlah kecil proyek).

Juga, jika ada beberapa alat lain yang memenuhi yang disebutkan di atas dan Anda yakin itu layak mendapat rekomendasi - jangan ragu untuk memasukkannya ke dalam diskusi.

zappan
sumber

Jawaban:

111

Saya telah mengerjakan dan dengan alat Integrasi Kontinu sejak yang melahirkan Cruise Control (versi java). Saya sudah mencoba hampir semuanya di beberapa titik. Saya tidak pernah lebih bahagia daripada saya bersama TeamCity. Ini sangat mudah untuk disiapkan dan masih memberikan banyak daya. Halaman statistik build yang menunjukkan waktu build, jumlah pengujian unit, tingkat kelulusan, dll. Sangat bagus. Halaman beranda proyek TeamCity juga sangat berharga. Untuk proyek .NET sederhana, Anda cukup memberi tahu TeamCity di mana solusinya dan rakitan apa yang memiliki pengujian dan hanya itu yang dibutuhkannya (selain lokasi kendali sumber). Kami juga telah menggunakan beberapa skrip MSBuild yang rumit dengannya dan menyelesaikan build chaining. Saya juga telah melalui dua peningkatan TeamCity dan itu tidak menyakitkan.

CruiseControl.NET juga bekerja dengan baik. Ini lebih sulit untuk disiapkan tetapi memiliki riwayat yang lebih panjang sehingga mudah untuk menemukan solusi di web. Karena CruiseControl.NET adalah open source, Anda juga memiliki opsi untuk menambah atau mengubah apa pun yang Anda suka. Saya telah menggunakan CruiseControl.NET sejak dirilis dan menulis beberapa kode awal untuk cc.tray (untungnya ditulis ulang oleh seseorang yang lebih tahu).

Cruise, dari ThoughtWorks, juga terlihat cukup bagus tapi saya tidak melihat alasan kuat untuk beralih. Jika saya memulai sebuah proyek baru, saya mungkin akan mencobanya, tetapi TeamCity telah melakukan pekerjaan yang hebat dengan membuat hal-hal sederhana menjadi sederhana sambil membuat kompleksnya tidak menimbulkan rasa sakit.

Sunting: Kami baru saja meningkatkan ke TeamCity 5.0 beberapa minggu yang lalu dan itu adalah peningkatan tanpa rasa sakit lainnya. Ini memungkinkan kami memanfaatkan kemampuan cakupan kode yang ditingkatkan dan dukungan GIT. Kami juga sekarang menggunakan fitur build pribadi dan komit yang telah diuji sebelumnya yang telah ada selama beberapa waktu. Saya hanya berpikir saya harus memperbarui jawaban untuk menunjukkan bahwa TeamCity terus meningkat dan masih mudah digunakan.

Mike Two
sumber
bertanya-tanya apakah dengan semua pengalaman Anda, Anda dapat memiliki sedikit untuk berbagi screencast pembuatan proyek .NET sederhana di atasnya dan bekerja dengan TeamCity (menggunakan JING (screencasting gratis) atau alat lain) dan memposting tautan di sini atau di suatu tempat jadi saya dan kita semua yang berjuang dengan itu akan memiliki startup yang bagus :) Terima kasih.
balexandre
2
@balexandre - Saya telah menemukan dokumen kota tim cukup bagus. Dan jawaban @ boj memberikan tautan ke pemeran layar yang bagus di sini blog.wekeroad.com/kona/kona-2
Mike Dua
Saya selalu takut dengan CI karena gambar CCNet yang saya miliki, minggu lalu saya mencoba TeamCity 6.5 dan itu sangat menyenangkan. tidak menyentuh satu pun file xml / konfigurasi.
kay. Satu
1
Jika saat ini Anda menggunakan CC.Net dan ingin pindah ke Team City, apakah itu menyakitkan? Bagaimana TC menghasilkan file MSI?
Wes
@ Ya, saya tidak tahu apakah ini masih relevan untuk Anda, tetapi kami memiliki 20+ proyek yang berjalan di CC.Net, tetapi baru-baru ini saya mengimplementasikan TeamCity untuk beberapa proyek Android yang kami miliki. Rasa sakit terbesar sejauh ini adalah mempelajari Ant, tetapi itu adalah sesuatu yang harus saya lakukan jika saya memasukkan proyek ke CC.Net. Saya akan dengan senang hati memindahkan semua proyek kami ke TeamCity jika saya dapat meyakinkan manajemen untuk membayar konfigurasi build tambahan yang kami perlukan (gratis sampai titik tertentu), terutama karena konfigurasi, yang sangat mudah di TeamCity dan rawa XML di CC. Bersih.
johnc
33

Saya dulu / saya penggemar berat CC.NET. Saat ini kami memiliki 5 proyek di CruiseControl, dan berfungsi dengan baik. Menulis file konfigurasi dengan tangan bisa jadi menyakitkan tapi tidak apa-apa.

Tapi .

Setelah Kona: Continuous Integration and Better Unit Testing screencast (1/3 pertama tentang TeamCity), saya akan memeriksa TeamCity juga. Saya suka dasbor pengujian unit terintegrasi dan antarmuka konfigurasi.

Saya pikir semua orang harus menonton video ini sebelum memilih CC.NET atau TeamCity.

ps: Saya harap ada video CC.NET yang berharga juga di internet.

boj
sumber
15

Server CI favorit saya sejauh ini adalah Hudson. Mudah diatur dan dipelihara, banyak grafik bagus untuk menunjukkan tren kepada pengembang dan non-pengembang, dan gratis.

Saya menggunakan TeamCity saat ini dalam sebuah proyek dan saya secara umum menyukainya, tetapi banyak grafik yang dihasilkannya tidak terlalu berguna, dan lebih rumit untuk dikonfigurasi daripada Hudson.

Meski begitu, TeamCity sangat kuat, gratis untuk banyak kegunaan, dan memiliki satu fitur mematikan: Remote Run. Anda dapat "melakukan pra-komitmen" check-in Anda langsung dari IDEA atau Eclipse, menjalankan satu atau beberapa konfigurasi build di server TeamCity, dan hanya melakukan perubahan jika build berhasil (misalnya, kompilasi dan semua pengujian lulus).

Mengingat bahwa Anda dapat mengaktifkan dan menjalankan TeamCity dan Hudson dalam beberapa jam, mungkin ada baiknya mengambil keduanya dan menjalankannya secara berdampingan, bersama dengan yang lain (seperti CruiseControl) yang dapat Anda pikirkan. Jika Anda tidak dapat menerima server CI dengan cepat untuk melakukan perbandingan secara berdampingan, maka setidaknya Anda memiliki titik data untuk kemudahan instalasi dan / atau konfigurasi.

Gene Gotimer
sumber
6
1 untuk Hudson. Lihat juga: menggunakan Hudson sebagai alat pembuatan .NET: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/…
Jonik
12

Saya telah menggunakan keduanya dengan sukses pada proyek yang berbeda. Dari segi pengaturan dan administrasi, Team City jauh lebih mudah untuk ditangani. Anda tidak perlu meretas file .config seperti yang Anda lakukan dengan CC dan pengaturannya sangat mudah. Karena Anda tidak memiliki banyak proyek, saya akan merekomendasikan Team City daripada CC sampai Anda mencapai titik bahwa Team City berharga $$.

Pengembang SaaS
sumber
12

Saya telah menggunakan CC.net dan TeamCity. Saya ditugaskan untuk menyiapkan dan menginstal TeamCity untuk organisasi saya (5 pengembang). Organisasi kami menggunakan beberapa alat dan praktik yang tidak umum (setidaknya, untuk organisasi seukuran kami), seperti Perforce untuk kontrol sumber dan beberapa agen build yang berjalan pada sistem operasi heterogen, yang menyebabkan beberapa masalah penyiapan awal. Namun, dukungan melalui email benar-benar terbaik dalam menyiapkan semuanya. Saya menerima jawaban atas pertanyaan bodoh saya dalam hitungan menit.

Antarmukanya intuitif dan responsif, serta penuh fitur. Produknya terasa sangat mahal. Konfigurasi mudah, dan antarmuka web cukup cerdas untuk memperbarui dirinya sendiri tanpa memulai ulang layanan agen atau server, atau bahkan menyegarkan laman.

Saya merasa kami menggunakan hampir semua fitur lanjutan dari produk dan sejauh ini tidak menemukan bug sama sekali. Integrasi ndepend, skrip NAnt bertingkat, pelabelan versi Perforce, sebut saja, kami sedang melakukannya.

Saya sangat merekomendasikan TeamCity kepada siapa pun yang mencari server integrasi berkelanjutan, atau server build apa pun, sungguh.

pengguna28669
sumber
Perforce adalah alat uncommen? Perforce sangat bagus untuk tim dengan ukuran berapa pun. Saya menggunakannya sendiri untuk pengembangan rumah saya :)
sonstabo
@sonstabo, saya setuju dengan itu, sebagian besar perusahaan kecil menggunakan SVN atau GIT dan Perforce sebagian besar digunakan di perusahaan besar. Saya telah menggunakan Perforce dan menyukainya, tetapi saya berada di 1.000 perusahaan pengembang ketika saya menggunakannya.
Samuel Neff
3

Tanpa ingin memberikan alat alternatif kepada Anda :-)

Hudson adalah alternatif open source yang hebat, saya telah menggunakan CC dan CC.net, dan saya akui menurut saya mereka adalah alat yang luar biasa. Saya sedang mempertimbangkan untuk beralih ke hudson karena tampaknya jauh lebih mudah untuk diatur dan dipelihara.

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

Scott James
sumber
1
+1 Karena sepertinya tidak ada yang memikirkan Hudson untuk .Net CI. Saya telah menggunakan Cruise Control, Team City, dan Bamboo, dan menemukan Hudson sebagai alat terbaik untuk pekerjaan itu dalam banyak kasus di mana anggaran menjadi perhatian besar.
Dan Rigby
3

Pastikan sistem yang Anda putuskan sesuai dengan jumlah proyek yang Anda perlukan untuk ditangani ...

Saya menggunakan CruiseControl.Net tetapi saya tidak akan merekomendasikannya untuk membangun banyak proyek ... Saya memiliki pengaturan (mungkin sedikit aneh) di mana saya memiliki banyak pustaka statis C ++ yang saya buat ke dalam aplikasi. Setiap pustaka bergantung pada pustaka lain dan aplikasi menarik satu set pustaka dan build. Setiap lib memiliki rangkaian pengujian. Setiap aplikasi memiliki rangkaian pengujian. Saya membangun untuk 5 kompiler dan variasi platform (windows).

Hal pertama yang saya temukan adalah bahwa pemicu proyek CC.Net tidak benar-benar sesuai dengan yang Anda butuhkan dan pemicu multi tidak berfungsi dengan baik dengan pemicu proyek. Cara kerja pemicu proyek (mereka menggunakan remote untuk menyambung ke server tempat proyek disimpan (meskipun itu adalah proyek yang dikelola oleh contoh yang sama dari CC.Net) dan kemudian menarik semua proyek dari server itu dan mencari daftar secara berurutan mencari proyek yang Anda minati ...) berarti proyek tersebut tidak berkembang dengan baik. Setelah Anda mendapatkan di atas sejumlah proyek tertentu, Anda akan menemukan bahwa CC.Net mengambil sebagian besar CPU untuk mesin build Anda.

Tentu saja, ini open source, jadi Anda dapat memperbaikinya ... Dan, saya yakin tidak masalah untuk sejumlah kecil proyek yang tidak saling bergantung.

Untuk detail lebih lanjut tentang masalah yang saya miliki dan beberapa patch untuk CC.Net lihat di sini http://www.lenholgate.com/archives/cat_ccnet.html

Len Holgate
sumber
oh ... terima kasih atas info ini, posting berharga. terutama ketika dikatakan bahwa TC adalah pengaturan sederhana dan batasannya adalah jumlah proyek, di mana CC & CC.Net mungkin ikut bermain. tetapi seperti yang Anda katakan, itu mendapat masalah ketika jumlah proyek meningkat ... terima kasih lagi
zappan
Bahkan dalam versi CC.Net saya yang sangat diretas, saya memiliki masalah karena CC.Net menggunakan pendekatan utas per proyek untuk penjadwalan dan, yah, itu hanya IMHO desain omong kosong.
Len Holgate
2

Saya baru saja menyiapkan cc .net. Ini adalah aplikasi yang bagus tetapi membutuhkan sedikit kesabaran. Anda akan mengedit file konfigurasi di banyak notepad :)

Sudah ada beberapa lama sehingga didukung dengan baik dan Anda biasanya dapat menemukan seseorang yang telah melakukan apa yang ingin Anda lakukan sebelumnya. Antarmuka web adalah .net juga yang merupakan nilai tambah bagi kami karena kami adalah toko Microsoft.

Saya belum menggunakan TeamCity tetapi saya telah mendengar beberapa rekomendasi tentangnya dan tampilannya cukup bagus.

alexmac.dll
sumber
2

Saya memiliki pengalaman menyiapkan dan menjalankan CruiseControl (versi Java) di Linux selama perusahaan saya sebelumnya. Seperti yang disarankan kebanyakan orang, ini bukanlah hal yang paling sepele untuk diatur. Anda perlu memahami kerangka kerjanya untuk menghasilkan konfigurasi yang bisa diterapkan / dikelola. Namun, setelah Anda melewati punuk itu, saya merasa CruiseControl cukup fleksibel untuk memungkinkan Anda melakukan berbagai macam hal agar sesuai dengan skenario yang berbeda.

Selain dokumentasi CruiseControl, halaman wiki -nya juga memiliki beberapa informasi berguna.

Saya tidak memiliki pengalaman langsung dengan TeamCity. Padahal fitur pre-test commitnya terlihat cukup menarik.

Alat CC lain yang mungkin Anda lihat adalah Bamboo dari Atlassian. Jauh lebih mudah untuk mengatur dan antarmukanya lebih bagus. Padahal, itu tidak sefleksibel seperti yang ditawarkan CruiseControl.

ejel
sumber
1

Opsi ketiga yang mungkin ingin Anda pertimbangkan: Thoughtworks 'Cruise. Itu dibangun di atas CruiseControl, tetapi menawarkan lebih banyak fitur, pengaturan yang lebih mudah, dll, dll. Tidak gratis (atau open source).

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

TheSmurf
sumber
1
Saya telah melihat Cruise beberapa kali dalam hal pengaturan sebagai sistem CI. itu tidak jauh lebih sederhana daripada misalnya CC.NET. Ini memiliki kekuatannya dalam membangun dan menyebarkan arus tetapi sebagai alat CI saya hal TeamCity jauh lebih kompeten
haqwin
Jika Anda akan membayar Cruise / Go, Anda juga bisa mendapatkan TeamCity secara gratis.
Niall Connaughton
0

Saya telah menggunakan Teamcity selama 1 setengah tahun terakhir, dan memiliki pengalaman yang luar biasa. Saya telah mengintegrasikan sejumlah proyek .Net dan Java dan menggunakan alat seperti MSBuild, Maven, dll. Saya menemukan Teamcity cukup mudah untuk disiapkan dan dikerjakan. Saya telah berhasil menjalankan CI untuk beberapa proyek sql juga yang merupakan sedikit mimpi buruk yang bisa menjadi lebih buruk dengan alat CI lainnya.
Baru-baru ini ditingkatkan ke Teamcity 8.0.6 yang tidak menimbulkan rasa sakit. Teamcity juga menyediakan REST API yang sangat berguna untuk beberapa skenario. Jika Anda menggunakan PowerShell untuk mengotomatiskan build, sejumlah skrip integrasi Psake / Teamcity tersedia di GitHub

Mohammad Nadeem
sumber