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
ruby-on-rails
ruby
continuous-integration
Jim Fiorato
źródło
źródło
Odpowiedzi:
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.rb
plik, aby uzyskać działa łączenie kodu (resources :projects
linia 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/Home
ale nie tworzy tego katalogu lubchown
do niegodaemon
(który jest używany domyślnie i należy zmienić na nowegojenkins
uż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:
Wybór
Poszliśmy z Jenkinsem , ale naprawdę chciałbym, żeby jedno z lżejszych rozwiązań się sprawdziło.
źródło
A co z CruiseControl.rb ?
Ten sam tłum, który zrobił
CruiseControl
(myśli) i napisałRuby
. Bardzo łatwy w użyciu,Rake
aby zintegrować inne narzędzia i może używać klejnotu ruby-growl do powiadomień.źródło
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ść.
źródło
Circle to zaawansowana usługa CI dla Railsów (i innych aplikacji internetowych). Z Twojej listy obsługuje następujące elementy:
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
źródło
Semaphore to nowa hostowana aplikacja CI dla aplikacji Ruby i Rails. Integruje się z GitHub, nie wymaga konfiguracji i ma prosty interfejs użytkownika.
źródło
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 .
źródło
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.
źródło
Travis CI stał się popularny w świecie rubinów: http://travis-ci.org/
źródło
cruisecontrol.rb byłby wtedy idealnym rozwiązaniem.
http://cruisecontrolrb.oughtworks.com/
źródło
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.
źródło
BigTuna - napisany w Rubim, używa Railsów i używa siebie jako swojego CI.
źródło
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
Pracujemy również nad tymi funkcjami:
źródło
Nikt tutaj nie wspomniał o Bamboo firmy Atlassian. Jest fajny artykuł przypominający tutorial o Ruby on Rails CI przy użyciu Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
źródło
Uczciwość wydaje się być świetnym rozwiązaniem. Wdrażanie na heroku jest proste: http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com
źródło
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; )
źródło
Run Code Run może być tym, czego potrzebujesz.
Edycja: link usunięty, ponieważ nie odnosi się już do poprzedniej witryny Run Code Run.
źródło
A potem jest CI Joe :
Używamy go na co dzień.
źródło
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.
źródło
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
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?
źródło
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.
źródło
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.
źródło