Ciągła integracja z Ruby on Rails? [Zamknięte]

149

Szukałem rozwiązania Continuous Integration dla Ruby on Rails, ale nie byłem zbyt zadowolony z wyników. Pochodzę ze sklepu .NET, który korzystał z CruiseControl.NET i byłem naprawdę zepsuty jego łatwością obsługi i bogatym statusem / raportowaniem.

Idealnie szukam:

  • Oczywista integracja Git / SVN i Test :: Unit

  • Integracja z Rake i / lub Capistrano

  • Interfejs sieciowy pokazujący stan kompilacji

  • Powiadomienie e-mail o nieudanych kompilacjach.

  • Powiadomienie na pulpicie (potencjalnie przez Growl)

  • REST API dla statusów kompilacji

  • Struktura wtyczki do uruchamiania innych narzędzi do analizy kodu i raportowania wyników w interfejsie użytkownika

Jim Fiorato
źródło
11
Więc jaki jest twój wybór teraz, trzy lata później?
Andrei
3
Czy mogę zasugerować circleci.com ?
Paul Biggar

Odpowiedzi:

83

Właśnie przejrzałem opcje tutaj i pomyślałem, że zwinię je pod koniec 2011 roku.

Integralność

Po doświadczeniu bliskiej śmierci , który opuścił wciąż linkowane strony z nieaktualnych informacji i powalonego witryny demo, projekt ten ma iskrę życia ponownie. Ale dokumentacja nie poszła dalej, a wiele, wiele kroków w samouczku jest po prostu zepsutych ; Musiałem zmienić odniesienia do klejnotów, zbudować kilka rzeczy poza zespołem, a potem nadal nie mogłem sprawić, by działało .

Cruise Control.rb

Śmiertelnie proste : wystarczy go pobrać, uruchomić wiersz poleceń, aby dodać projekt (nie ma do tego interfejsu użytkownika ) i uruchomić aplikację Rails. Ale nie ma też interfejsu użytkownika do edycji twojego projektu i nie ma prawdziwej integracji z artefaktami kompilacji poza wyświetlaniem linków do nich: nie masz żadnych wykresów przeprowadzonych testów, żadnych linii trendów itp. Musiałem również dostosować routes.rbplik, aby uzyskać działa łączenie kodu ( resources :projectslinia musi znajdować się pod wszystkimi innymi trasami niedomyślnymi).

TeamCity

To wygląda super , ale skala płatnej zdaje się walić. 3 agentów za darmo, a kiedy jesteś zależny, musisz wydać setki dolarów. Kompilacje osobiste wyglądają świetnie, ale nie mają budżetu .

Jenkins (z domu Hudson )

Jest to niezłomny program Java i jest załadowany tysiącem opcji , więc interfejs użytkownika jest mylący, a konfigurowanie projektów jest uciążliwe . Ale kiedy już to skonfigurujesz, otrzymasz całą masę wtyczek, które można pobrać z dowolnego miejsca, uruchomić prawie wszystko i zgłosić prawie wszystko. Instalator OS X wskazuje Jenkins na, /Users/Shared/Jenkins/Homeale nie tworzy tego katalogu lub chowndo niego daemon(który jest używany domyślnie i należy zmienić na nowego jenkinsużytkownika, aby można było skonfigurować integrację z GitHub).

Inni

Tak naprawdę tego nie próbowałem, ale pomyślałem, że wspomnę, dlaczego:

  • CI Joe chce mieć repozytorium GitHub bardziej niż ja, a jego twórcy nawet go nie używają; są na Jenkinsie.
  • Cerberus wydaje się zgrabnie mały, ale nie ma interfejsu użytkownika i nie publikuje automatycznie artefaktów kompilacji, tak aby inni mogli je zobaczyć.
  • BigTuna wydaje się być klonem CruiseControl.rb bez (już minimalnego) wsparcia społeczności.
  • Bamboo wygląda naprawdę fajnie, jeśli używasz JIRA i BitBucket, ale my nie używamy żadnego z nich. Wdraża się, ale mamy już te skonfigurowane w Capistrano.

Wybór

Poszliśmy z Jenkinsem , ale naprawdę chciałbym, żeby jedno z lżejszych rozwiązań się sprawdziło.

TALlama
źródło
8
A co z Travisem?
Vanuan
3
Pracuję nad projektem o zamkniętym kodzie źródłowym, więc jeśli nie zrozumiem ich (słabo sformułowanej) dokumentacji, Travis nie jest dla nas opcją (nie ma mowy, żebym dał im dostęp do naszego projektu GitHub). Gdybym pisał perełki, wskoczyłbym na Travisa natychmiast, ale nie na rzeczywiste strony Railsowe.
TALlama
2
Dla przypomnienia, Travis CI wkrótce wyda wersję PRO (płatną i prywatną), która jest już w fazie beta. To trochę drogie w przypadku małych projektów za 129 USD i 249 USD miesięcznie, ale warto rzucić
Joshua Pinter
41

A co z CruiseControl.rb ?

Ten sam tłum, który zrobił CruiseControl(myśli) i napisał Ruby. Bardzo łatwy w użyciu, Rakeaby zintegrować inne narzędzia i może używać klejnotu ruby-growl do powiadomień.

Craigb
źródło
Miałem problem z uruchomieniem tego w systemie Windows ... nie działało tak, jak reklamowano w filmie „To nie może być takie proste” na stronie.
Gishu
Nie dałbym się zwieść brandingowi myśli - oceniaj to na podstawie jego zalet.
Dafydd Rees
ten projekt był dopiero niedawno rozwijany i nie wydał nowej wersji od 2009 ... ale działa ..
Scott Schulthess
3
cruisecontrol jest bardzo prymitywny i bardzo przestarzały.
bragboy,
1
Biorąc pod uwagę różne zdarzenia związane z bezpieczeństwem do początku lutego (2013), pozostawienie CruiseControl.rb w jego domyślnej konfiguracji (wersje Gem itp.) Jest nie do przyjęcia. Udało mi się uruchomić go pod Rails 3.0.20, ale 3.2.11+ najwyraźniej zajmie znacznie więcej pracy. W tym momencie jestem bardzo otwarty na alternatywy, z listą wymagań bardzo podobną do tej Jima Fiorato.
Jeff Dickey,
27

Możesz również rozważyć Hudson . Jest przeznaczony do użytku z projektami Java, chociaż istnieje duży wybór dostępnych wtyczek, w tym obsługa Ruby i Rake. Ma bardzo przydatny interfejs sieciowy i obsługuje powiadomienia e-mail, a także wiele innych (takich jak twitter lub gigantyczne lampy niedźwiedzi).

Społeczność jest również bardzo aktywna i pojawiło się kilka artykułów na temat łączenia Hudson z Selenium, które mogą być pomocne przy testowaniu aplikacji Railsowych po stronie przeglądarki.

Innym spojrzeniem na to jest Team City, które jest bezpłatne dla małych projektów i zespołów (w tym komercyjnych). Naprawdę podoba mi się Team City i używałem go wcześniej w innych projektach, ale obecnie używamy Mercurial do kontroli źródła, a wsparcie Team City było trochę zbyt beta, kiedy się nad tym zastanawialiśmy.

Przerzuciłem się z CruiseControl.net na Team City i byłem absolutnie zszokowany postępem. Mam jednak słabość do Hudsona ze względu na podobny zestaw funkcji i bardzo aktywną społeczność.

juliański
źródło
2
+1 dla TC. Bez wątpienia najlepszy CI, jaki kiedykolwiek widziałem
Matt Briggs
4
Ostrzegam, że Hudson ma pewne problemy polityczne z powodu, uh, nazwiemy to kreatywnymi różnicami w Oracle. Wydaje się, że większość deweloperów porusza się z widelcem, który będzie nazywał się Jenkins; Oracle ma pracowników i będzie nadal wspierać i rozwijać firmę Hudson.
dondo
4
Dobra uwaga, dondo. Osoby zainteresowane śledzeniem dalszego rozwoju Hudsona mogą sprawdzić Jenkins na stronie jenkins-ci.org
Julian,
A oto porównanie działań deweloperskich Jenkins i Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan
13

Circle to zaawansowana usługa CI dla Railsów (i innych aplikacji internetowych). Z Twojej listy obsługuje następujące elementy:

  • Integracja Git i Test :: Unit ( również integracje RSpec, Cucumber, Jasmine, Konacha i obsługuje dowolne dodatkowe polecenia testowe )
  • Integracja z Rake i / lub Capistrano ( używa Rake do uruchamiania poleceń i konfigurowania baz danych, obsługuje ciągłe wdrażanie za pomocą Capistrano lub Heroku lub cokolwiek tak naprawdę )
  • Interfejs sieciowy pokazujący stan kompilacji
  • Powiadomienie e-mail o nieudanych kompilacjach.
  • Powiadomienie na pulpicie ( przez CCMenu / CCTray )
  • REST API dla statusów kompilacji
  • Struktura wtyczek do uruchamiania innych narzędzi do analizy kodu i raportowania wyników w interfejsie użytkownika ( możemy uruchamiać dowolne polecenia i wsparcie, w tym ich status w ramach kompilacji )

Joel i ja spędziliśmy trochę czasu na rozmowie na ten temat w podcastie Stackoverflow - sprawdź to !


(edytuj) Zastrzeżenie: Paul Biggar założył Circle, jak stwierdza w swoim profilu Stackoverflow

Paul Biggar
źródło
8

Semaphore to nowa hostowana aplikacja CI dla aplikacji Ruby i Rails. Integruje się z GitHub, nie wymaga konfiguracji i ma prosty interfejs użytkownika.

marko
źródło
Używamy Semaphore jako części pakietu CI i działa fantastycznie. Możesz zobaczyć, jak jest zintegrowany z innym oprogramowaniem, takim jak Jasmine i HipChat w jednym z naszych postów na blogu . Operator wspomniał również o wykorzystaniu Capistrano jako narzędzia do rozmieszczania. Używaliśmy go w przeszłości, ale był dla nas za wolny, więc przeszliśmy na Minę .
denis.arunovic
8

Zaktualizowano luty 2015

Kod pocztowy

Na Drone.io brakowało rozwoju, więc przerzuciłem się na Codeship i bardzo mi się to podoba. Jest aktywnie rozwijany i ulepszany, ma świetny design i jest bardzo szybki. Ponadto w przypadku najniższego poziomu jest on faktycznie bezpłatny (do 100 kompilacji miesięcznie), więc ostatecznie okazał się tańszy niż Drone.io.

Oryginalna odpowiedź

Drone.io

Właśnie skonfigurowałem naszą główną aplikację Ruby on Rails z http://drone.io/ . To była bułka z masłem i ma świetny interfejs. Powiedziałbym, że warto to sprawdzić, jeśli szukasz prostego, hostowanego rozwiązania .

Joshua Pinter
źródło
7

Sprawdź Tddium . Tddium obsługuje ciągłą integrację, wdrażanie i interaktywne testowanie aplikacji Ruby. Zapewnia zarządzane środowisko z obsługą Selenium, Headless Webkit i Solr. Obsługuje instancje Postgres, MySQL, Mongo i Redis na żywo. I automatycznie równolegle duże zestawy testów.

Jay Moorthi
źródło
5
Jay, możesz chcieć ujawnić swój związek z tddium i solano labs. Zgodnie z FAQ : „w odpowiedziach musisz ujawnić swoją przynależność”
tgf
7

Travis CI stał się popularny w świecie rubinów: http://travis-ci.org/

Vanuan
źródło
Travis CI jest dobry do projektów open source, ale nie do projektów zamkniętych. Jenkins może objąć oba przypadki :-)
Gabor Garami
1
Ale czy nie jest to open source? github.com/travis-ci/travis-ci Nie możesz po prostu skonfigurować swojej prywatnej instancji travis, tak jak robisz to z jenkinsem?
Vanuan
Prawdopodobnie mógłbyś, ale w pliku Readme odradzają to i wspominają, że nie nadaje się jeszcze do prywatnego hostingu.
Andrew
Teraz jest w porządku dla zamkniętych projektów
aehlke
6

Podobnie jak wiele osób byłem wielkim fanem cruisecontrol.rb, ale ostatnio przeniosłem swoje projekty na Integrity .

Lekki i łatwy w konfiguracji (podobnie jak cc.rb), ale z ładniejszym interfejsem.

csexton
źródło
5
Właśnie próbowałem skonfigurować Integrity i to jest bałagan.
lawrence
5

BigTuna - napisany w Rubim, używa Railsów i używa siebie jako swojego CI.

oma
źródło
3
Pamiętaj, że link appelier.com do BigTuna jest martwym linkiem do wygasłej domeny. Projekt można teraz znaleźć na Github .
Jeff Dickey,
5

Możesz dać Codeship spin i sprawdzić, czy to działa dla Ciebie (jestem jednym z założycieli)

Ciągła integracja i wdrażanie w chmurze (ze specjalną obsługą Heroku)

Pierwsze cztery elementy zostały już wdrożone i w wielu firmach działają dobrze

  • Oczywista integracja Git / SVN i Test :: Unit
  • Integracja z Rake i / lub Capistrano
  • Interfejs sieciowy pokazujący stan kompilacji
  • Powiadomienie e-mail o nieudanych kompilacjach.

Pracujemy również nad tymi funkcjami:

  • Powiadomienie na pulpicie (potencjalnie przez Growl)
  • REST API dla statusów kompilacji
  • Struktura wtyczki do uruchamiania innych narzędzi do analizy kodu i raportowania wyników w interfejsie użytkownika
Florian Motlik
źródło
3

Zrób to sam. Napisz skrypt bash do uruchamiania testów, a następnie uruchom procedurę wdrażania, jeśli testy zakończą się pomyślnie. Potrzebujesz powiadomień? Zrób sobie wiadomość e-mail w postaci zwykłego tekstu w przypadku sukcesu / niepowodzenia. Potrzebujesz harmonogramu? Cronjob. To jest 0 USD / mies. I będziesz mieć wskazówkę, co robisz. Nie widzę, jak płacenie komuś 40 $ miesięcznie pomoże mi to zrobić w jakikolwiek sposób bardziej efektywnie.

Rozważmy na przykład: moje wdrożenie kończy się niepowodzeniem z powodu nieprawidłowo skonfigurowanego potoku zasobów (nie można przeprowadzić prekompilacji zasobów). Nie da się tego złapać za pomocą testów jednostkowych, funkcjonalnych, integracji, regresji ani żadnych innych testów. Ten błąd nie zostanie przechwycony przez CI. Ilość czasu, jaką spędziłbym na pisaniu skryptu bash, prawdopodobnie byłaby mniejsza niż czas, który spędziłbym na konfigurowaniu środowiska CI, a ja zaoszczędzę 40 $ miesięcznie.

Juuuuuust wrzucił moje dwa pensy do dyskusji; )

Victor Pudeyev
źródło
1

Run Code Run może być tym, czego potrzebujesz.

Edycja: link usunięty, ponieważ nie odnosi się już do poprzedniej witryny Run Code Run.

Todd Stout
źródło
1
Teraz ma zostać zamknięty. :(
Andrew Grimm
1

A potem jest CI Joe :

Przypomina stary zardzewiały pickup: może być śmierdzący i obrzydliwy, ale spełnia swoje zadanie.

Używamy go na co dzień.

Hakan Ensari
źródło
1

Lubię tylko CI joe, miałem problemy z całą resztą, CI Joe to absolutne minimum do wykonania pracy, super zwinne i niezawodne. Źródło Hudson jest okropne, a interfejs użytkownika nie przemawia do mnie.

Brent Greeff
źródło
0

Właśnie opublikowałem bardzo prostą aplikację Continuous Integration dla RubyOnRails + SVN / GIT. Może powinieneś spróbować:

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

Wziąłem kilka pomysłów na narzędzia pomiarowe i testujące i po wypróbowaniu niektórych narzędzi CI i nie lubiłem żadnego z nich, zdecydowałem się zbudować własne, bez konieczności budowania dużych plików XML lub jakiejkolwiek innej konfiguracji. Dokładnie taki, jaki został stworzony przez Railsy.

Jeśli chcesz, prześlij mi swoją opinię.

Z poważaniem,

Felipe Giotto.


źródło
0

Uruchamianie CI po każdym zatwierdzeniu wydaje się dość kosztowne, jeśli akceptujesz filozofię „często zatwierdzania”. Co powiesz na uruchamianie prostego cronjob co kilka godzin i wysyłanie wyników e-mailem na listę mailingową deweloperów?

JasonOng
źródło
A może po prostu skonfiguruj serwer CI tak, aby sondował zmiany tylko raz na godzinę? Większość aplikacji CI obsługuje to ustawienie.
jerhinesmith
2
Dzięki git możesz często angażować się, ale rzadko naciskać.
Vanuan
0

Właśnie skonfigurowałem do tego Hudson / Jenkins. Klejnot ci_reporter może pomóc w formatowaniu wyjścia JUnit, czego oczekiwał Hudson, a Hudson ma wtyczkę Rails, dzięki czemu mogę zobaczyć pokrycie rcov, raporty z testów, statystyki rails i jeszcze więcej.

Gabor Garami
źródło
Czy mógłbyś porównać swoją konfigurację z innymi alternatywami?
Andrei,
Ponieważ używam Rails 2.3.x do moich projektów produkcyjnych, obecnie nie, ponieważ większość innych alternatyw wymaga Rails 3.x. Jednak kiedy będę mógł, przetestuję to i opublikuję swoje doświadczenia.
Gabor Garami
Próbowałem też Jenkinsa z Railsami 3.x i działa bardzo dobrze. Próbowałem też innych rozwiązań (na przykład IntegrityApp), ale ponieważ używam Jenkinsa do testowania innych projektów, stało się to ostatecznym rozwiązaniem. Nie oznacza to, że IntegrityApp lub inne rzeczy są złe, IntegrityApp to bardzo dobra rzecz, jednak bardziej lubię Jenkins.
Gabor Garami
0

Powinieneś również rozważyć przyjrzenie się CloudMunch. Zapewnia to platformę poliglotową, która pozwala mieć różne języki jako część bazy kodu, z bogatym zestawem metadanych kompilacji.

Prasanna
źródło