Ruby on Rails için Sürekli Entegrasyon? [kapalı]


149

Ruby on Rails için bir Sürekli Entegrasyon çözümü arıyordum, ancak sonuçlardan çok memnun kalmadım. CruiseControl.NET kullanan bir .NET dükkandan geldi ve kullanım kolaylığı ve zengin durum / raporlama ile gerçekten şımarık.

İdeal olarak arıyorum:

  • Açık Git / SVN ve Test :: Birim entegrasyonu

  • Rake ve / veya Capistrano ile entegrasyon

  • Derlemenin durumunu gösteren bir web arayüzü

  • Başarısız derlemeler için e-posta bildirimi.

  • Masaüstü bildirimi (Potansiyel olarak Growl aracılığıyla)

  • Derleme durumları için REST API'sı

  • Kullanıcı arayüzünde diğer kod analiz araçlarını çalıştırmak ve sonuçları raporlamak için eklenti çerçevesi


11
Peki şimdi üç yıl sonra senin seçimin ne?
Andrei

3
Circleci.com'u önerebilir miyim ?
Paul Biggar

Yanıtlar:


83

Buradaki seçenekleri gözden geçirdim ve 2011 sonundan itibaren onları toplayacağımı düşündüm.

Bütünlük

Bir sonra ölüme yakın deneyim hala bağlı sol web ile eski bilgilerin demo site ve yere düşmüş, bu proje yine hayatın bir kıvılcım vardır. Ancak dokümantasyon devam etmedi ve öğreticideki adımların birçoğu basitçe kırıldı ; Taşlara yapılan referansları değiştirmek, gruptan bazı şeyler oluşturmak zorunda kaldım ve sonra hala çalışamadım .

Hız Sabitleyici.rb

Çok basit : Sadece indirin, projenizi eklemek için bir komut satırı çalıştırın ( bunu yapmak için kullanıcı arayüzü yoktur ) ve Rails uygulamasını çalıştırın. Ancak, projenizi düzenlemek için bir kullanıcı arayüzü yoktur ve bunlara bağlantılar göstermenin yanı sıra yapı yapay nesnelerle gerçek bir entegrasyon yoktur : testlerin herhangi bir grafiğini almazsınız, trend çizgileri vb routes.rb. kod bağlama çalışma ( resources :projectssatır diğer tüm varsayılan olmayan yolların altına taşımak gerekir).

TeamCity

Bu harika görünüyor , ancak ödeme ölçeği boşa çıktı. 3 ajan ücretsiz ve sonra bağımlı olduğunuzda yüzlerce dolar dole gerekir. Personal Builds harika görünüyor, ancak bütçeniz yok .

Jenkins (née Hudson )

Bu bir Java sapmasıdır ve bin seçenekle yüklüdür , bu yüzden UI kafa karıştırıcıdır ve projelerinizi kurmak için bir iştir . Ancak bir kez kurduktan sonra , çoğu yerden çekebilecek, her şeyi çalıştırabilecek ve her şeyi rapor edebilecek birçok eklenti elde edersiniz . OS X Installer Jenkins işaret /Users/Shared/Jenkins/Homeama bu dizini veya oluşturmak için başarısız chownonu daemon(varsayılan olarak kullanır, ve yeni olarak değişmelidir jenkinsEğer GitHub entegrasyonunu ayarlayabilirsiniz böylece kullanıcı).

Diğerleri

Bunları gerçekten denemedim, ama nedenini anlatacağımı düşündüm:

  • CI Joe GitHub deposuna istediğimden daha fazla sahip olmak istiyor ve yaratıcıları bile kullanmıyor; Jenkins'teler.
  • Cerberus düzgün bir şekilde küçük görünüyor ancak kullanıcı arayüzü yok ve başkalarının görebileceği yapı yapılarını otomatik olarak yayınlamıyor.
  • BigTuna , (zaten minimal) topluluk desteği olmayan bir CruiseControl.rb klonu gibi görünüyor.
  • JIRA ve BitBucket kullanıyorsanız bambu gerçekten düzgün görünüyor, ancak ikisini de kullanmıyoruz. Dağılıyor ama zaten Capistrano'da ayarladık.

Seçim

Jenkins'le gittik , ama gerçekten daha hafif çözümlerden birinin işe yaramasını dilerdim.


8
Travis ne olacak?
Vanuan

3
Kapalı kaynaklı bir proje üzerinde çalışıyorum, bu yüzden (kötü ifade edilmiş) belgelerini yanlış anlamadım, Travis bizim için gerçekten bir seçenek değil (GitHub projemize yazma erişimi vermenin hiçbir yolu yok). Bazı taşlar yazsaydım hemen Travis'e atlardım, ama gerçek Rails siteleri için değil.
TALlama

2
Sadece kayıt için, Travis CI yakında Beta'da olan bir PRO (Ücretli ve Özel) sürümünü yayınlayacak. Ayda 129 $ ve 249 $ 'lık küçük projeler için biraz pahalı ama bir göz atmaya değer: travis-ci.com
Joshua Pinter

41

CruiseControl.rb ne dersiniz ?

Aynı kalabalık yaptı CruiseControl( düşünce çalışmaları ) ve yazdı Ruby. RakeDiğer araçlarınızı entegre etmek için kullanımı çok kolaydır ve bildirimleriniz için ruby-growl gem'i kullanabilirsiniz .


Ben bu pencerelerde çalıştırmak için sorun yaşıyorum ... benim için sitede 'o kadar kolay olamaz' video reklamı olarak işe yaramadı.
Gishu

Düşünce markaları tarafından sallanmayacaktım - haklarına göre yargılayın.
Dafydd Rees

Bu proje yakın zamanda devam etti ve 2009'dan beri yeni bir sürüm yayınlamadı ... ama işe yarıyor ..
Scott Schulthess

3
cruisecontrol çok ilkel ve çok çok eski.
bragboy

1
Şubat (2013) başına kadar güvenlikle ilgili çeşitli olaylar göz önüne alındığında, CruiseControl.rb'yi varsayılan yapılandırmasında (Gem sürümleri, vb.) Bırakmak mantıksızdır. Rails 3.0.20 altında çalıştırabildim, ancak 3.2.11+ görünüşe göre çok daha fazla iş alacak. Bu noktada, ben çok Jim Fiorato en çok benzeyen bir gereklilik listesi ile, alternatiflere açık.
Jeff Dickey

27

Hudson'ı da düşünmek isteyebilirsiniz . Java projeleri ile kullanılmak üzere tasarlanmıştır, ancak Ruby ve Rake desteği de dahil olmak üzere çok çeşitli eklentiler mevcuttur. Çok kullanışlı bir web arayüzüne sahiptir ve e-posta bildirimlerini ve diğerlerini (twitter veya dev ayı lambaları gibi) destekler.

Topluluk da çok aktif ve tarayıcı tarafında Rails uygulamalarını test etmek için yararlı olabilecek Selenium ile Hudson'ı bağlamak hakkında birkaç makale var .

Bir diğer bakış, küçük projeler ve ekipler (ticari dahil) için ücretsiz olan Team City'dir . Team City'yi gerçekten seviyorum ve daha önce diğer projeler için kullandım, ancak şu anda kaynak kontrolü için Mercurial kullanıyoruz ve Team City'nin desteği, düşünürken biraz fazla beta idi.

CruiseControl.net'ten Team City'ye geçtim ve geliştirmede kesinlikle şok oldum. Benzer özellik seti ve çok aktif topluluğu nedeniyle Hudson'a kısmi davranıyorum.


2
TC için +1. Gördüğüm en iyi CI eller aşağı
Matt Briggs

4
Hudson için aşağı inen bazı siyasi şeyler olduğu konusunda uyarılmalıdır, uh, Oracle ile yaratıcı farklılıklar diyeceğiz. Geliştiricilerin büyük bir kısmı Jenkins olarak adlandırılacak çatalla hareket ediyor gibi görünüyor; Oracle'ın personeli vardır ve Hudson'ı desteklemeye ve geliştirmeye devam edecektir.
dondo

4
İyi nokta dondo. Hudson'ın sürekli gelişimini izlemek isteyenler için Jenkins'i jenkins-ci.org
Julian

Jenkins ve Hudson geliştirme faaliyetinin karşılaştırması: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan

13

Circle , Rails (ve diğer web uygulamaları) için gelişmiş bir CI hizmetidir . Listenizden aşağıdakileri destekler:

  • Git ve Test :: Birim entegrasyonu ( ayrıca RSpec, Salatalık, Yasemin, Konacha entegrasyonları ve isteğe bağlı ekstra test komutlarını destekler )
  • Rake ve / veya Capistrano ile entegrasyon ( komutları çalıştırmak ve DB'leri kurmak için Rake'i kullanır, Capistrano veya Heroku kullanarak sürekli dağıtımı destekler veya gerçekten herhangi bir şey )
  • Derlemenin durumunu gösteren bir web arayüzü
  • Başarısız derlemeler için e-posta bildirimi.
  • Masaüstü bildirimi ( CCMenu / CCTray aracılığıyla )
  • Derleme durumları için REST API'sı
  • Kullanıcı arayüzünde diğer kod analizi araçlarını çalıştırmak ve sonuçları raporlamak için eklenti çerçevesi ( derlemenin bir parçası olarak durumlarını da içeren rastgele komutlar ve destek çalıştırabiliriz )

Joel ve ben Stackoverflow podcast bu konuda sohbet ederken bir süre geçirdi - bir göz atın !


Yasal Uyarı: Paul Biggar, Stackoverflow profilinde belirttiği gibi Circle'ı kurdu


8

Semaphore , Ruby ve Rails uygulamaları için yeni bir barındırılan CI uygulamasıdır. GitHub ile bütünleşir, kurulum gerektirmez ve basit bir kullanıcı arayüzüne sahiptir.


Semaphore'u CI paketinin bir parçası olarak kullanıyoruz ve harika çalışıyor. Blog yazılarımızdan birinde Jasmine ve HipChat gibi diğer yazılımlarla nasıl entegre edildiğini görebilirsiniz . Operasyon ayrıca Capistrano'yu bir dağıtım aracı olarak kullandığından bahsetti. Geçmişte kullandık, ama bizim için çok yavaştı, bu yüzden Mina'ya geçtik .
denis.arunovic

8

Güncelleme Şubat-2015

Codeship

Drone.io'da geliştirme eksikliği vardı, bu yüzden Codeship'e geçtim ve iyice keyif alıyorum. Aktif olarak geliştirildi ve geliştirildi, harika bir tasarıma sahip ve çok hızlı. Ayrıca, alt katman için aslında ücretsizdir (ayda 100 yapıya kadar), bu yüzden Drone.io'dan daha ucuz hale geldi.

Orijinal Yanıt

Drone.io

Ana Ruby on Rails uygulamamızı http://drone.io/ ile ayarlıyorum . Çocuk oyuncağıydı ve harika bir arayüze sahip. Basit, barındırılan bir çözüm arıyorsanız kontrol etmeye değer diyebilirim .


7

Tddium'a bir göz atın . Tddium, Ruby uygulamalarının sürekli entegrasyonunu, kurulumunu ve etkileşimli testini destekler. Selenium, Headless Webkit ve Solr desteği ile yönetilen bir ortam sağlar. Canlı Postgres, MySQL, Mongo ve Redis örneklerine ev sahipliği yapar. Ve büyük test paketlerini otomatik olarak paralel hale getirir.


5
Jay, tddium ve solano laboratuvarlarıyla ilişkinizi ortaya çıkarmak isteyebilirsiniz. SSS uyarınca : "Yanıtlarınızda ilişkinizi açıklamalısınız"
tgf

7

Travis CI yakut dünyasında popüler oldu: http://travis-ci.org/


Travis CI açık kaynaklı projeler için iyidir ancak aslında kapalı kaynaklı projeler için iyi değildir. Jenkins her iki vakayı da kapsayabilir :-)
Gabor Garami

1
Ama açık kaynaklı değil mi? github.com/travis-ci/travis-ci Özel travis örneğinizi jenkinlerle yaptığınız gibi ayarlayamaz mısınız?
Vanuan

Muhtemelen olabilir, ama Benioku, buna karşı tavsiye ve henüz özel barındırma için iyi bir uyum olmadığını belirtti.
Andrew

Kapalı projeler için şimdi iyi
aehlke


6

Birçok insan gibi ben cruisecontrol.rb büyük bir hayranıydım, ama son zamanlarda projelerimi Integrity'ye değiştirdim .

Hafif ve kurulumu kolay (cc.rb gibi), ancak daha hoş bir arayüze sahiptir.


5
Dürüstlük kurmaya çalıştım ve bu bir karmaşa.
lawrence

5

BigTuna - Ruby'de yazılmış, Rails kullanıyor ve kendisini CI olarak kullanıyor.


3
BigTuna için appelier.com bağlantısının, süresi dolmuş bir alan adında ölü bir bağlantı olduğunu unutmayın. Proje artık Github'da bulunabilir .
Jeff Dickey

5

Codeship'e bir spin verebilir ve sizin için işe yarayıp yaramadığını görebilirsiniz (Ben kuruculardan biriyim)

Bulut Tabanlı Sürekli Entegrasyon ve Dağıtım (özel Heroku desteğiyle)

Öğelerinizin ilk dördü zaten uygulanmış ve birkaç şirket için iyi çalışıyor

  • Açık Git / SVN ve Test :: Birim entegrasyonu
  • Rake ve / veya Capistrano ile entegrasyon
  • Derlemenin durumunu gösteren bir web arayüzü
  • Başarısız derlemeler için e-posta bildirimi.

Bu özellikler üzerinde de çalışıyoruz:

  • Masaüstü bildirimi (Potansiyel olarak Growl aracılığıyla)
  • Derleme durumları için REST API'sı
  • Kullanıcı arayüzünde diğer kod analiz araçlarını çalıştırmak ve sonuçları raporlamak için eklenti çerçevesi



3

Kendin Yap. Sınamaları çalıştırmak için bir bash betiği yazın ve sınamalar geçerse bir dağıtım yordamı çalıştırın. Bildirime mi ihtiyacınız var? Başarı / başarısızlık konusunda kendinize bir düz metin e-posta çekin. Zamanlayıcıya mı ihtiyacınız var? Cronjob. Bu 0 $ / ay. Ve ne yaptığınıza dair bir ipucunuz olacak. Birisine 40 $ / ay ödeyerek bunu daha verimli bir şekilde yapmama nasıl yardımcı olacağını görmüyorum.

Örneğin: yanlış yapılandırılmış bir varlık boru hattı nedeniyle dağıtımım başarısız oluyor (varlıklar önceden derlenemiyor). Bu birim, fonksiyonel, entegrasyon, regresyon veya başka testlerle yakalanmayacaktır. Bu hata CI tarafından yakalanmaz. Bir bash betiği yazmak için harcayacağım zaman, muhtemelen bir CI ortamı oluşturmak için harcayacağım zamandan daha az olacaktır ve kendime $ 40 / ay tasarruf edeceğim.

Juuuuuust iki kuruşumu tartışmaya atıyor; )


1

Run Code Run ihtiyacınız olan şey olabilir.

Düzenle: bağlantı artık eski Run Code Run sitesine atıfta bulunmadığından kaldırıldı.


1
Şimdi kapatılmak üzere. :(
Andrew Grimm

1

Ve sonra CI Joe var :

Eski bir paslı kamyonet gibi: koklamak ve iğrenç olabilir, ama işi halleder.

Günlük olarak kullanıyoruz.


1

Ben sadece CI joe gibi, geri kalan her şeyi ile sorunları vardı, CI Joe işi yapmak için mutlak minimum, süper Çevik ve güvenilir. Hudson kaynağı korkunç ve kullanıcı arayüzü bana hitap etmiyor.


0

RubyOnRails + SVN / GIT için çok basit bir Sürekli Entegrasyon Uygulaması yayınladım. Belki de denemelisin:

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

Ölçüm ve test araçları hakkında bazı fikirler aldım ve bazı CI araçlarını denedikten ve kimseyi beğenmedikten sonra, büyük XML dosyaları veya başka bir yapılandırma oluşturmaya gerek kalmadan kendim oluşturmaya karar verdim. Raylarýn yapýlmasý gibi.

İsterseniz, lütfen bana geri bildirim gönderin.

Saygılarımla,

Felipe Giotto.


0

"Sık sık taahhüt edin" felsefesine abone olursanız, her taahhütten sonra CI yürütmek oldukça pahalı görünür. Her birkaç saatte bir basit bir cronjob çalıştırmaya ve sonuçları bir geliştirici posta listesine e-postayla göndermeye ne dersiniz?


Veya, CI sunucunuzu saatte bir değişiklik yapmak üzere ayarlamaya ne dersiniz? Çoğu CI uygulaması bu ayarı destekler.
jerhinesmith

2
Git ile sık sık ama nadiren zorlayabilirsiniz.
Vanuan

0

Bunun için bir Hudson / Jenkins yaptım. Ci_reporter gem, JUnit çıktısını biçimlendirmeye yardımcı olabilir, Hudson tarafından beklendiği gibi ve Hudson bir Rails eklentisine sahiptir, bu yüzden rcov kapsamını, test raporlarını, ray istatistiklerini ve daha fazlasını görebilirsiniz.


Kurulumunuzu diğer alternatiflerle karşılaştırabilir misiniz?
Andrei

Üretim projelerim için Rails 2.3.x kullandığım için şu anda değil, çünkü diğer alternatifler Rails 3.x gerektirir. Ancak yapabildiğim zaman test edeceğim ve deneyimlerimi yayınlayacağım.
Gabor Garami

Jenkins'i Rails 3.x ile de denedim ve çok iyi çalışıyor. Başka çözümleri de denedim (örneğin IntegrityApp), ancak Jenkins'i başka bir projeyi test etmek için kullandığımdan bunun için nihai çözüm oldu. IntegrityApp veya diğer şeylerin kötü olduğu anlamına gelmez, IntegrityApp çok iyi şeyler, ancak Jenkins'i biraz daha seviyorum.
Gabor Garami

0

CloudMunch'a da bakmayı düşünmelisiniz. Bu, zengin yapı meta verisi kümesiyle kod tabanınızın bir parçası olarak farklı dillere sahip olmanızı sağlayan bir çoklu dil platformu sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.