Integrazione continua per Ruby on Rails? [chiuso]


149

Ho cercato una soluzione di integrazione continua per Ruby on Rails, ma non sono stato troppo soddisfatto dei risultati. Venivo da un negozio .NET che utilizzava CruiseControl.NET ed era davvero viziato dalla sua facilità d'uso e dal ricco stato / reportistica.

Idealmente sto cercando:

  • L'ovvia integrazione Git / SVN e Test :: Unit

  • Integrazione con Rake e / o Capistrano

  • Un'interfaccia Web che mostra lo stato della build

  • Notifica e-mail di build fallite.

  • Notifica desktop (potenzialmente tramite Growl)

  • API REST per stati di compilazione

  • Framework di plug-in per l'esecuzione di altri strumenti di analisi del codice e di report dei risultati nell'interfaccia utente


11
Allora, qual è la tua scelta adesso, tre anni dopo?
Andrei,

3
Posso suggerire circleci.com ?
Paul Biggar,

Risposte:


83

Ho appena esaminato le opzioni qui e ho pensato di arrotolarle alla fine del 2011.

Integrità

Dopo un'esperienza di pre-morte che ha lasciato l'ancora legata a sito web con informazioni obsolete e abbattuto il sito demo, questo progetto ha ancora una scintilla di vita. Ma la documentazione non è andata avanti e molti passaggi del tutorial sono semplicemente interrotti ; Ho dovuto cambiare i riferimenti alle gemme, costruire alcune cose fuori banda, e poi non riuscivo ancora a farlo funzionare .

Cruise Control.rb

Semplicemente scaricabile: basta scaricarlo, eseguire una riga di comando per aggiungere il progetto (non esiste un'interfaccia utente per farlo) ed eseguire l'app Rails. Ma non esiste nemmeno un'interfaccia utente per la modifica del progetto e non esiste una vera integrazione con gli artefatti di costruzione oltre alla visualizzazione dei collegamenti: non si ottengono grafici dei test eseguiti, né linee di tendenza, ecc. Ho anche dovuto regolare il routes.rbfile per ottenere il collegamento codice funzionante (la resources :projectslinea deve spostarsi al di sotto di tutte le altre rotte non predefinite).

TeamCity

Questo sembra impressionante , ma la scala retributiva sembra fuori di colpo. 3 agenti gratuiti e quando sei dipendente devi distribuire centinaia di dollari. Build personali sembrano fantastici, ma non hanno il budget .

Jenkins (nata Hudson )

Questo è uno stalwart Java ed è pieno di mille opzioni , quindi l' interfaccia utente è confusa ed è un lavoro ingrato impostare i tuoi progetti . Ma una volta impostato, ottieni molti plugin che possono estrarre da quasi ovunque, eseguire quasi tutto e segnalare quasi tutto. Il programma di installazione di OS X punta a Jenkins /Users/Shared/Jenkins/Homema non riesce a creare quella directory o chownquella daemon(che viene utilizzata per impostazione predefinita e dovresti passare a un nuovo jenkinsutente in modo da poter configurare l'integrazione di GitHub).

Altri

Non li ho davvero provati, ma ho pensato di menzionare il perché:

  • CI Joe vuole possedere il repository GitHub più di quanto io lo voglia, e i suoi creatori non lo stanno nemmeno usando; sono su Jenkins.
  • Cerberus sembra ordinatamente piccolo ma non ha un'interfaccia utente e non pubblica automaticamente artefatti di build in cui gli altri possono vederli.
  • BigTuna sembra essere un clone CruiseControl.rb senza il supporto (già minimo) della community.
  • Bamboo sembra davvero pulito se usi JIRA e BitBucket, ma non usiamo nessuno dei due. Si schiera ma abbiamo già quelli installati a Capistrano.

La scelta

Siamo andati con Jenkins , ma vorrei davvero che una delle soluzioni più leggere avesse funzionato.


8
Che mi dici di Travis?
Vanuan,

3
Lavoro a un progetto a fonte chiusa, quindi a meno che non fraintenda la loro documentazione (di scarsa qualità), Travis non è in realtà un'opzione per noi (non è affatto possibile concedere loro l'accesso in scrittura al nostro progetto GitHub). Se stessi scrivendo delle gemme, salterei su Travis in un istante, ma non per i veri siti di Rails.
TALlama,

2
Per la cronaca, Travis CI pubblicherà presto una versione PRO (a pagamento e privata) già in versione beta. È un po 'caro per piccoli progetti a $ 129 e $ 249 al mese, ma vale la pena dare un'occhiata: travis-ci.com
Joshua Pinter,

41

Che ne dici di CruiseControl.rb ?

Stessa folla che ha fatto CruiseControl(lavori di riflessione) e scritta Ruby. Molto facile da usare Rakeper integrare gli altri strumenti e può usare la gemma rubino-ringhio per le tue notifiche.


Ho avuto problemi a far funzionare questo su Windows ... non ha funzionato come pubblicizzato nel video "non può essere così facile" sul sito per me.
Gishu,

Non sarei influenzato dal marchio del pensiero - giudicalo per i suoi meriti.
Dafydd Rees,

questo progetto è stato mantenuto solo di recente e non ha rilasciato una nuova versione dal 2009 ... ma funziona ..
Scott Schulthess

3
cruisecontrol è molto primitivo e molto obsoleto.
Bragboy,

1
Dati i vari eventi relativi alla sicurezza fino all'inizio di febbraio (2013), lasciare CruiseControl.rb nella sua configurazione predefinita (versioni Gem, ecc.) È inconcepibile. Sono stato in grado di farlo funzionare su Rails 3.0.20, ma 3.2.11+ apparentemente richiederà molto più lavoro. A questo punto, sono molto aperto alle alternative, con un elenco di requisiti molto simile a quello di Jim Fiorato.
Jeff Dickey,

27

Potresti anche considerare Hudson . È progettato per essere utilizzato con progetti Java sebbene sia disponibile una vasta selezione di plug-in, incluso il supporto per Ruby e Rake. Ha un'interfaccia web molto utile e supporta le notifiche e-mail e molti altri (come Twitter o le lampade dell'orso gigante).

Anche la community è molto attiva e ci sono stati diversi articoli su come collegare Hudson con Selenium che potresti essere utile per testare le applicazioni Rails sul lato browser.

Un altro aspetto è Team City che è gratuito per piccoli progetti e team (incluso commerciale). Mi piace molto il Team City e l'ho già usato per altri progetti, ma attualmente stiamo utilizzando Mercurial per il controllo del codice sorgente e il supporto del Team City era un po 'troppo beta quando lo stavamo considerando.

Sono passato da CruiseControl.net a Team City e sono rimasto assolutamente scioccato dal miglioramento. Sono parziale di Hudson, anche se a causa del suo set di funzionalità simili e della comunità molto attiva.


2
+1 per TC. Senza dubbio il miglior CI che abbia mai visto
Matt Briggs l'

4
Tieni presente che ci sono alcune cose politiche che stanno accadendo per Hudson a causa delle differenze creative che chiameremo Oracle. La maggior parte degli sviluppatori sembra muoversi con il fork che si chiamerà Jenkins; Oracle ha personale e continuerà a supportare e sviluppare Hudson.
dondo

4
Buon punto dondo. Per coloro che sono interessati a monitorare lo sviluppo continuo di Hudson, puoi dare un'occhiata a Jenkins su jenkins-ci.org
Julian

Ed ecco un confronto tra l'attività di sviluppo di Jenkins vs Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan

13

Circle è un servizio CI avanzato per Rails (e altre app Web). Dal tuo elenco, supporta quanto segue:

  • Git and Test :: Integrazione unità ( anche integrazioni RSpec, Cucumber, Jasmine, Konacha e supporta comandi di test extra arbitrari )
  • Integrazione con Rake e / o Capistrano ( utilizza Rake per eseguire comandi e impostare DB, supportare la distribuzione continua tramite Capistrano o Heroku o qualsiasi altra cosa )
  • Un'interfaccia Web che mostra lo stato della build
  • Notifica e-mail di build fallite.
  • Notifica desktop ( tramite CCMenu / CCTray )
  • API REST per stati di compilazione
  • Framework di plug-in per l'esecuzione di altri strumenti di analisi del codice e risultati dei report nell'interfaccia utente ( siamo in grado di eseguire comandi e supporto arbitrari incluso il loro stato come parte della build )

Joel e io abbiamo passato un po 'di tempo a chiacchierare di questo sul podcast StackOverflow : dai un'occhiata !


(modifica) Disclaimer: Paul Biggar ha fondato Circle come afferma nel suo profilo StackOverflow


8

Semaphore è una nuova app CI ospitata per le app Ruby e Rails. Si integra con GitHub, non richiede alcuna configurazione e ha una semplice interfaccia utente.


Stiamo usando Semaphore come parte della suite CI e funziona alla grande. Puoi vedere come è integrato con altri software come Jasmine e HipChat in uno dei nostri post sul blog . L'operazione ha anche menzionato l'uso di Capistrano come strumento di distribuzione. Lo abbiamo usato in passato, ma era troppo lento per noi, quindi siamo passati a Mina .
denis.arunovic,

8

Aggiornato febbraio 2015

Codeship

Drone.io è stato carente di sviluppo, quindi sono passato a Codeship e mi sto divertendo molto. È attivamente sviluppato e migliorato, ha un ottimo design ed è molto veloce. Inoltre, per il livello inferiore è in realtà gratuito (fino a 100 build al mese) quindi è risultato essere più economico di Drone.io.

Risposta originale

Drone.io

Ho appena installato la nostra principale applicazione Ruby on Rails con http://drone.io/ . Era un gioco da ragazzi e ha un'ottima interfaccia. Direi che vale la pena dare un'occhiata se stai cercando una soluzione semplice e ospitata .


7

Dai un'occhiata a Tddium . Tddium supporta l'integrazione continua, la distribuzione e il test interattivo delle applicazioni Ruby. Fornisce un ambiente gestito con supporto per Selenium, Headless Webkit e Solr. Ospita istanze Postgres, MySQL, Mongo e Redis live. E parallelizza automaticamente grandi suite di test.


5
Jay, potresti voler esporre la tua associazione con i laboratori tddium e solano. Per le FAQ : "devi rivelare la tua affiliazione nelle risposte"
tgf

7

Travis CI è diventato popolare nel mondo rubino: http://travis-ci.org/


Travis CI è utile per progetti open source ma non per quelli chiusi. Jenkins può
trattare

1
Ma non è open source? github.com/travis-ci/travis-ci Non puoi semplicemente configurare la tua istanza di Travis privata come fai con jenkins?
Vanuan,

Probabilmente potresti, ma nel Readme, lo sconsigliano e menzionano che non è ancora adatto per l'hosting privato.
Andrew

Ora va bene per progetti chiusi
aehlke


6

Come un certo numero di persone, ero un grande fan di cruisecontrol.rb, ma recentemente ho passato i miei progetti a Integrity .

Leggero e facile da installare (molto simile a cc.rb), ma con un'interfaccia più gradevole.


5
Ho appena provato a configurare Integrity ed è un casino.
Lawrence,


5

Puoi dare un giro a Codeship e vedere se funziona per te (sono uno dei fondatori)

Integrazione e distribuzione continue basate su cloud (con supporto speciale Heroku)

I primi quattro dei tuoi articoli sono già implementati e funzionano bene per un certo numero di aziende

  • L'ovvia integrazione Git / SVN e Test :: Unit
  • Integrazione con Rake e / o Capistrano
  • Un'interfaccia Web che mostra lo stato della build
  • Notifica e-mail di build fallite.

Stiamo lavorando anche su queste funzionalità:

  • Notifica desktop (potenzialmente tramite Growl)
  • API REST per stati di compilazione
  • Framework di plug-in per l'esecuzione di altri strumenti di analisi del codice e di report dei risultati nell'interfaccia utente



3

Fallo da solo. Scrivere uno script bash per eseguire i test e quindi eseguire una procedura di distribuzione in caso di superamento dei test. Hai bisogno di notifiche? Sparati una e-mail in chiaro su successo / fallimento. Hai bisogno di un programmatore? Cronjob. Questo è $ 0 / mese e avrai un'idea di cosa stai facendo. Non vedo come pagare qualcuno $ 40 / mese mi aiuterà a farlo in modo più efficiente.

Si consideri ad esempio: la mia distribuzione non riesce a causa di una pipeline di risorse configurata in modo errato (le risorse non sono precompilate). Questo non verrà catturato con unità, funzionalità, integrazione, regressione o altri test. Questo errore non verrà rilevato dall'IC. Il tempo che dedicherei a scrivere uno script bash è probabilmente inferiore al tempo che impiegherei a configurare un ambiente CI e mi risparmierò $ 40 / mese.

Juuuuuust gettando i miei due penny nella discussione; )


1

Esegui Esegui codice potrebbe essere quello che ti serve.

Modifica: collegamento rimosso poiché non fa più riferimento al precedente sito Run Run.


1
Ora sta per essere chiuso. :(
Andrew Grimm,

1

E poi c'è CI Joe :

È come un vecchio camioncino arrugginito: potrebbe essere puzzolente e disgustoso, ma fa il lavoro.

Lo usiamo su base giornaliera.


1

Mi piace solo CI Joe, ho avuto problemi con tutto il resto, CI Joe è il minimo indispensabile per svolgere il lavoro, super Agile e affidabile. La fonte hudson è orribile e l'interfaccia utente non mi attira.


0

Ho appena pubblicato un'app di integrazione continua molto semplice per RubyOnRails + SVN / GIT. Forse dovresti provarlo:

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

Ho preso alcune idee sugli strumenti di misurazione e test e, dopo aver provato alcuni strumenti di CI e non aver gradito nessuno di loro, ho deciso di crearne uno mio, senza la necessità di creare grandi file XML o qualsiasi altra configurazione. Proprio come è stato creato Rails.

Se ti piace, per favore inviami un feedback ..

I migliori saluti,

Felipe Giotto.


0

Eseguire CI dopo ogni commit sembra piuttosto costoso se ti abboni alla filosofia "commit spesso". Che ne dici di eseguire un semplice cronjob ogni poche ore e inviare i risultati via e-mail a una mailing list di sviluppo?


Oppure, che ne dici di impostare il tuo server CI per eseguire il polling solo per le modifiche ogni ora? La maggior parte delle app CI supporta questa impostazione.
jerhinesmith

2
Con git puoi impegnarti spesso ma spingere raramente.
Vanuan,

0

Ho appena configurato un Hudson / Jenkins per questo. La gemma ci_reporter può aiutare a formattare l'output di JUnit, cosa previsto da Hudson, e Hudson ha un plug-in Rails, quindi posso vedere la copertura di rov, rapporti di test, statistiche di rotaie e ancora di più.


Potresti confrontare la tua configurazione con le altre alternative?
Andrei,

Poiché sto usando Rails 2.3.x per i miei progetti di produzione, attualmente no, perché la maggior parte delle altre alternative richiede Rails 3.x. Tuttavia, quando posso, lo testerò e pubblicherò le mie esperienze.
Gabor Garami,

Ho provato anche Jenkins con Rails 3.x e funziona molto bene. Ho provato anche alcune altre soluzioni (ad esempio IntegrityApp), ma dal momento che utilizzo Jenkins per testare anche altri progetti è diventata la soluzione finale. Non significa che IntegrityApp o altre cose siano cattive, IntegrityApp è roba molto buona, tuttavia Jenkins mi piace un po 'di più.
Gabor Garami,

0

Dovresti considerare anche CloudMunch. Ciò fornisce una piattaforma poliglotta per permetterti di avere lingue diverse come parte della tua base di codice, con un ricco set di metadati di build.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.