Integrasi berkelanjutan untuk Ruby on Rails? [Tutup]

149

Saya telah mencari-cari solusi Integrasi Berkelanjutan untuk Ruby on Rails, tetapi belum terlalu senang dengan hasilnya. Saya berasal dari toko .NET yang menggunakan CruiseControl.NET dan benar-benar dimanjakan dengan kemudahan penggunaan dan status / pelaporan yang kaya.

Idealnya saya mencari:

  • Git / SVN dan Test :: Integrasi unit yang jelas

  • Integrasi dengan Rake dan / atau Capistrano

  • Antarmuka web yang menunjukkan status pembuatan

  • Email notifikasi bangunan gagal.

  • Notifikasi desktop (berpotensi melalui Growl)

  • REST API untuk membangun status

  • Kerangka kerja plugin untuk menjalankan alat analisis kode lainnya dan hasil pelaporan di UI

Jim Fiorato
sumber
11
Jadi apa pilihan Anda sekarang, tiga tahun kemudian?
Andrei
3
Bisakah saya menyarankan circleci.com ?
Paul Biggar

Jawaban:

83

Saya baru saja melalui opsi di sini dan berpikir saya akan menggulungnya pada akhir 2011.

Integritas

Setelah pengalaman hampir mati yang meninggalkan situs web yang masih terhubung dengan informasi yang ketinggalan jaman dan menjatuhkan situs demo, proyek ini memiliki percikan kehidupan lagi. Tetapi dokumentasi belum bergerak, dan banyak dan banyak langkah dalam tutorialnya benar-benar rusak ; Saya harus mengubah referensi permata, membuat beberapa hal dari band, dan kemudian saya masih tidak bisa membuatnya bekerja .

Cruise Control.rb

Sangat sederhana : Anda hanya mengunduhnya, menjalankan baris perintah untuk menambahkan proyek Anda (tidak ada UI untuk melakukannya), dan jalankan aplikasi Rails. Tapi juga tidak ada UI untuk mengedit proyek Anda, dan tidak ada integrasi nyata dengan membangun artefak selain menampilkan tautan ke sana: Anda tidak mendapatkan grafik uji coba, tidak ada garis tren, dll. Saya juga harus menyesuaikan routes.rbfile untuk mendapatkan penautan kode berfungsi ( resources :projectsgaris harus bergerak di bawah semua rute non-default lainnya).

TeamCity

Ini terlihat luar biasa , tetapi skala bayarannya kelihatan rusak. 3 agen gratis dan kemudian ketika Anda tergantung Anda perlu membagikan ratusan dolar. Build Pribadi terlihat bagus, tetapi tidak memiliki anggaran .

Jenkins (née Hudson )

Ini adalah pendukung Java dan dimuat dengan seribu opsi , sehingga UI membingungkan dan merupakan tugas untuk mengatur proyek Anda . Tetapi begitu Anda mengaturnya, Anda mendapatkan banyak sekali plugin yang dapat ditarik dari mana saja, menjalankan hampir semua hal, dan melaporkan sebagian besar segalanya. Penginstal OS X mengarahkan Jenkins /Users/Shared/Jenkins/Hometetapi gagal membuat direktori atau direktori chowntersebut daemon(yang digunakan secara default, dan Anda harus berubah menjadi jenkinspengguna baru sehingga Anda dapat mengatur integrasi GitHub).

Lainnya

Saya tidak benar-benar mencoba ini, tetapi berpikir saya akan menyebutkan alasannya:

  • CI Joe ingin memiliki repo GitHub lebih dari yang saya inginkan, dan pembuatnya bahkan tidak menggunakannya; mereka ada di Jenkins.
  • Cerberus tampaknya sangat kecil tetapi tidak memiliki UI dan tidak secara otomatis menerbitkan artefak tempat orang lain dapat melihatnya.
  • BigTuna tampaknya menjadi klon CruiseControl.rb tanpa dukungan komunitas (sudah minimal).
  • Bambu terlihat sangat rapi jika Anda menggunakan JIRA dan BitBucket, tetapi kami tidak menggunakan keduanya. Itu menyebarkan tetapi kita sudah memiliki yang diatur di Capistrano.

Pilihan

Kami pergi dengan Jenkins , tetapi saya benar-benar berharap salah satu solusi yang lebih ringan berhasil.

TALlama
sumber
8
Bagaimana dengan travis?
Vanuan
3
Saya bekerja pada proyek sumber tertutup, jadi kecuali saya salah paham dokumentasi (kata-kata buruk) mereka, Travis sebenarnya bukan pilihan bagi kami (tidak mungkin saya memberi mereka akses tulis ke proyek GitHub kami). Jika saya sedang menulis beberapa permata saya akan melompat ke Travis dalam sekejap, tetapi tidak untuk situs Rails yang sebenarnya.
TALlama
2
Sebagai catatan, Travis CI akan segera merilis versi PRO (Berbayar dan Pribadi) yang sudah dalam Beta. Agak mahal untuk proyek-proyek kecil dengan harga $ 129 dan $ 249 per bulan, tetapi patut dilihat: travis-ci.com
Joshua Pinter
41

Bagaimana dengan CruiseControl.rb ?

Kerumunan yang sama yang melakukan CruiseControl(pemikiran) dan ditulis Ruby. Sangat mudah digunakan Rakeuntuk mengintegrasikan alat Anda yang lain, dan dapat menggunakan permata ruby-growl untuk notifikasi Anda.

craigb
sumber
Saya mengalami kesulitan menjalankan ini di windows ... tidak berfungsi seperti yang diiklankan di video 'tidak mungkin semudah itu' di situs untuk saya.
Gishu
Saya tidak akan terombang-ambing oleh branding karya-karya pemikiran - menilai itu berdasarkan kemampuannya.
Dafydd Rees
proyek ini baru-baru ini dipertahankan dan belum merilis versi baru sejak 2009 ... tetapi berhasil ..
Scott Schulthess
3
cruisecontrol sangat primitif dan sangat usang.
bragboy
1
Mengingat berbagai peristiwa yang berhubungan dengan keamanan hingga awal Februari (2013), meninggalkan CruiseControl.rb dalam konfigurasi default-nya (versi Gem, dll.) Tidak beralasan. Saya sudah bisa menjalankannya di bawah Rails 3.0.20, tetapi 3.2.11+ tampaknya akan membutuhkan lebih banyak pekerjaan. Pada titik ini, saya sangat terbuka untuk alternatif, dengan daftar persyaratan yang sangat mirip dengan Jim Fiorato.
Jeff Dickey
27

Anda mungkin juga ingin mempertimbangkan Hudson . Ini dirancang untuk digunakan dengan proyek-proyek Java walaupun ada banyak pilihan plug-in yang tersedia termasuk dukungan untuk Ruby dan Rake. Ini memiliki antarmuka web yang sangat berguna dan mendukung pemberitahuan email serta banyak lainnya (seperti twitter, atau lampu beruang raksasa).

Komunitas ini juga sangat aktif dan ada beberapa artikel tentang mengaitkan Hudson dengan Selenium yang Anda mungkin bisa membantu untuk menguji aplikasi Rails di sisi browser.

Pandangan lain adalah Team City yang gratis untuk proyek dan tim kecil (termasuk komersial). Saya sangat menyukai Team City dan telah menggunakannya sebelumnya untuk proyek lain, tetapi saat ini kami menggunakan Mercurial untuk kontrol sumber dan dukungan Team City agak terlalu beta ketika kami mempertimbangkannya.

Saya beralih dari CruiseControl.net ke Team City dan benar-benar terkejut dengan peningkatannya. Saya sebagian ke Hudson meskipun karena set fitur yang sama dan komunitas yang sangat aktif.

Julian
sumber
2
+1 untuk TC. Berikan CI terbaik yang pernah saya saksikan
Matt Briggs
4
Berhati-hatilah bahwa ada beberapa hal politis turun untuk Hudson karena, uh, kita akan menyebutnya perbedaan kreatif, dengan Oracle. Sebagian besar pengembang tampaknya bergerak dengan garpu yang akan disebut Jenkins; Oracle memiliki staf dan akan terus mendukung dan mengembangkan Hudson.
dondo
4
Poin bagus, dondo. Bagi mereka yang tertarik melacak perkembangan Hudson yang berkelanjutan, Anda dapat mengunjungi Jenkins di jenkins-ci.org
Julian
Dan inilah perbandingan aktivitas pengembangan Jenkins vs Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan
13

Circle adalah layanan CI canggih untuk Rails (dan aplikasi web lainnya). Dari daftar Anda, ini mendukung yang berikut:

  • Git dan Test :: Integrasi unit ( juga integrasi RSpec, Mentimun, Jasmine, Konacha, dan mendukung perintah uji tambahan sewenang-wenang )
  • Integrasi dengan Rake dan / atau Capistrano ( menggunakan Rake untuk menjalankan perintah dan mengatur DB, mendukung penyebaran berkelanjutan menggunakan Capistrano atau Heroku, atau apa pun juga )
  • Antarmuka web yang menunjukkan status pembuatan
  • Email notifikasi bangunan gagal.
  • Notifikasi desktop ( melalui CCMenu / CCTray )
  • REST API untuk membangun status
  • Kerangka kerja plugin untuk menjalankan alat analisis kode lainnya dan hasil pelaporan di UI ( kami dapat menjalankan perintah dan dukungan sewenang-wenang termasuk statusnya sebagai bagian dari build )

Joel dan saya menghabiskan waktu sambil mengobrol tentang hal ini di Internet podcast Stackoverflow - lihat saja !


(sunting) Penafian: Paul Biggar mendirikan Circle saat ia menyatakan di profil Stackoverflow-nya

Paul Biggar
sumber
8

Semaphore adalah aplikasi CI baru yang di-host untuk aplikasi Ruby dan Rails. Terintegrasi dengan GitHub, tidak memerlukan pengaturan dan memiliki UI sederhana.

marko
sumber
Kami menggunakan Semaphore sebagai bagian dari CI suite dan ini berfungsi fantastis. Anda dapat melihat bagaimana itu terintegrasi dengan perangkat lunak lain seperti Jasmine dan HipChat di salah satu posting blog kami . Op juga menyebutkan menggunakan Capistrano sebagai alat penyebaran. Kami menggunakannya di masa lalu, tapi itu terlalu lambat bagi kami sehingga kami beralih ke Mina .
denis.arunovic
8

Diperbarui Februari-2015

Codeship

Ada kekurangan pengembangan pada Drone.io jadi saya beralih ke Codeship dan saya benar-benar menikmatinya. Ini secara aktif dikembangkan dan ditingkatkan, memiliki desain yang hebat dan sangat cepat. Plus, untuk tingkat bawah sebenarnya gratis (hingga 100 build per bulan) sehingga akhirnya menjadi lebih murah daripada Drone.io.

Jawaban Asli

Drone.io

Saya baru saja mengatur aplikasi Ruby on Rails utama kami dengan http://drone.io/ . Sepotong kue dan punya antarmuka yang bagus. Saya akan mengatakan pantas untuk dicoba jika Anda mencari solusi sederhana yang di-host .

Joshua Pinter
sumber
7

Lihat Tddium . Tddium mendukung integrasi berkelanjutan, penyebaran, dan pengujian interaktif aplikasi Ruby. Ini memberikan lingkungan yang dikelola dengan dukungan untuk Selenium, Headless Webkit, dan Solr. Itu host langsung contoh Postgres, MySQL, Mongo, dan Redis. Dan secara otomatis memparalelkan suite tes besar.

Jay Moorthi
sumber
5
Jay, Anda mungkin ingin mengekspos hubungan Anda dengan laboratorium tddium dan solano. Per FAQ : "Anda harus mengungkapkan afiliasi Anda dalam jawaban Anda"
tgf
7

Travis CI telah menjadi populer di dunia ruby: http://travis-ci.org/

Vanuan
sumber
Travis CI baik untuk proyek-proyek sumber terbuka tetapi tidak benar-benar untuk proyek-proyek sumber tertutup. Jenkins dapat menutupi kedua kasus :-)
Gabor Garami
1
Tapi bukankah itu open source? github.com/travis-ci/travis-ci Tidak bisakah Anda mengatur instance travis pribadi Anda seperti yang Anda lakukan dengan jenkins?
Vanuan
Anda mungkin bisa, tetapi di Readme, mereka merekomendasikan menentangnya dan menyebutkan bahwa itu belum cocok untuk hosting pribadi.
Andrew
Tidak apa-apa sekarang untuk proyek tertutup
aehlke
6

Seperti sejumlah orang, saya adalah penggemar berat cruisecontrol.rb, tetapi baru-baru ini mengalihkan proyek saya ke Integrity .

Ringan dan mudah diatur (mirip cc.rb), tetapi dengan antarmuka yang lebih bagus.

csexton
sumber
5
Saya hanya mencoba mengatur Integritas dan itu berantakan.
lawrence
5

BigTuna - ditulis dalam Ruby, menggunakan Rails dan menggunakan dirinya sebagai CI-nya.

oma
sumber
3
Harap diperhatikan bahwa tautan appelier.com untuk BigTuna adalah tautan mati ke domain kedaluwarsa. Proyek sekarang dapat ditemukan di Github .
Jeff Dickey
5

Anda dapat memberikan Codeship putaran dan melihat apakah itu berfungsi untuk Anda (saya adalah salah satu pendiri)

Integrasi dan Penerapan Berkelanjutan berbasis cloud (dengan dukungan Heroku khusus)

Empat item pertama Anda sudah diterapkan dan berfungsi dengan baik untuk sejumlah perusahaan

  • Git / SVN dan Test :: Integrasi unit yang jelas
  • Integrasi dengan Rake dan / atau Capistrano
  • Antarmuka web yang menunjukkan status pembuatan
  • Email notifikasi bangunan gagal.

Kami sedang mengerjakan fitur-fitur itu juga:

  • Notifikasi desktop (berpotensi melalui Growl)
  • REST API untuk membangun status
  • Kerangka kerja plugin untuk menjalankan alat analisis kode lainnya dan hasil pelaporan di UI
Florian Motlik
sumber
3

Lakukan sendiri. Tulis skrip bash untuk menjalankan tes dan kemudian jalankan prosedur penyebaran jika tes lulus. Perlu pemberitahuan? Tembak sendiri email plaintext untuk keberhasilan / kegagalan Perlu penjadwal? Cronjob. Ini adalah $ 0 / bln., Dan Anda akan memiliki petunjuk tentang apa yang Anda lakukan. Saya tidak melihat bagaimana membayar seseorang $ 40 / bln akan membantu saya melakukan hal ini dengan cara yang lebih efisien.

Pertimbangkan misalnya: penyebaran saya gagal karena pipa aset yang dikonfigurasi dengan tidak benar (aset gagal dikompilasi). Ini tidak akan ditangkap dengan unit, fungsional, integrasi, regresi, atau tes lainnya. Kesalahan ini tidak akan ditangkap oleh CI. Jumlah waktu yang saya habiskan untuk menulis skrip bash cenderung kurang dari jumlah waktu yang saya habiskan untuk menyiapkan lingkungan CI, dan saya akan menghemat $ 40 / bln.

Juuuuuust melemparkan dua penny ke dalam diskusi; )

Victor Pudeyev
sumber
1

Jalankan Kode Jalankan mungkin yang Anda butuhkan.

Sunting: tautan dihapus karena tidak lagi merujuk ke situs Run Code Run sebelumnya.

Todd Stout
sumber
1
Sekarang akan ditutup. :(
Andrew Grimm
1

Dan kemudian, ada CI Joe :

Ini seperti sebuah truk pickup tua yang berkarat: mungkin bau dan kotor, tetapi itu menyelesaikan pekerjaan.

Kami menggunakannya setiap hari.

Hakan Ensari
sumber
1

Saya hanya suka CI joe, saya punya masalah dengan yang lainnya, CI Joe adalah minimum absolut untuk menyelesaikan pekerjaan, super Agile dan dapat diandalkan. Sumber hudson mengerikan, dan UI tidak menarik bagi saya.

Brent Greeff
sumber
0

Saya baru saja menerbitkan Aplikasi Integrasi Berkelanjutan yang sangat sederhana untuk RubyOnRails + SVN / GIT. Mungkin Anda harus mencobanya:

http://github.com/felipegiotto/Inotegration/tree/master

Saya mengambil beberapa ide alat pengukuran dan pengujian dan, setelah mencoba beberapa alat CI dan tidak menyukai siapa pun di antaranya, saya memutuskan untuk membuat sendiri, tanpa perlu membuat file XML besar atau konfigurasi lainnya. Persis seperti Rails dibuat.

Jika Anda suka, kirimkan saya umpan balik ..

Salam Hormat,

Felipe Giotto.


sumber
0

Menjalankan CI setelah setiap komit tampaknya agak mahal jika Anda berlangganan filosofi "komit sering". Bagaimana menjalankan cronjob sederhana setiap beberapa jam dan mengirimkan hasilnya ke milis dev?

JasonOng
sumber
Atau, bagaimana kalau hanya mengatur server CI Anda untuk hanya polling untuk perubahan sekali setiap jam? Sebagian besar aplikasi CI mendukung pengaturan ini.
jerhinesmith
2
Dengan git, Anda dapat sering melakukan tetapi jarang mendorong.
Vanuan
0

Saya baru saja mengkonfigurasi Hudson / Jenkins untuk itu. Permata ci_reporter dapat membantu memformat output JUnit, apa yang diharapkan oleh Hudson, dan Hudson memiliki plugin Rails, jadi saya dapat melihat cakupan rcov, laporan pengujian, statistik rails dan bahkan lebih banyak lagi.

Gabor Garami
sumber
Bisakah Anda membandingkan pengaturan Anda dengan alternatif lain?
Andrei
Karena saya menggunakan Rails 2.3.x untuk proyek-proyek produksi saya, saat ini tidak, karena alternatif lain yang paling membutuhkan Rails 3.x. Namun, ketika saya bisa, saya akan mengujinya, dan mempublikasikan pengalaman saya.
Gabor Garami
Saya mencoba Jenkins dengan Rails 3.x juga dan itu bekerja dengan sangat baik. Saya mencoba beberapa solusi lain juga (misalnya IntegrityApp), tetapi karena saya menggunakan Jenkins untuk menguji proyek lain juga itu menjadi solusi akhir untuk itu. Itu tidak berarti IntegrityApp atau hal-hal lain buruk, IntegrityApp adalah hal yang sangat baik, namun saya lebih suka Jenkins.
Gabor Garami
0

Anda harus mempertimbangkan untuk melihat CloudMunch juga. Ini menyediakan platform polyglot untuk memungkinkan Anda memiliki bahasa yang berbeda sebagai bagian dari basis kode Anda, dengan serangkaian metadata build yang kaya.

Prasanna
sumber