2009-03-02 10 views

risposta

36

Come un lungo periodo di tempo CruiseControl committer e chi non ha mai utilizzato Hudson Sono abbastanza di parte, ma il mio prendere su di esso è:

Hudson è molto più facile ottenere installato e funzionante (in gran parte da una bella interfaccia web) e ha una community di sviluppo di plugin molto attiva.

CruiseControl ha il supporto di un sacco di 3rd party stuff e ha il vantaggio di fare alcuni trucchetti con la configurazione xml come la preconfigurazione del plugin e include.projects che consente di eseguire la versione delle informazioni di configurazione con il progetto.

Se hai solo poche build, penso che Hudson sia il chiaro vincitore. Se hai un sacco di cose - e non ti dispiace xml - allora penso che i trucchi di configurazione di CruiseControl diventino un vero punto di forza.

+2

Link per "roba di terze parti" non funziona. –

15

Una differenza è che Hudson è il prodotto di un singolo genio dell'intelletto — Kohsuke Kawaguchi. Per questo motivo, è coerente, coerente e solido come una roccia. Il lato negativo potrebbe essere una limitazione del tasso di progresso. Tuttavia, Kohsuke è incredibilmente prolifico, quindi non sarei troppo preoccupato per questo. Ed è estensibile, quindi se c'è qualcosa per cui Kohsuke non ha tempo (o non vuole), probabilmente lo puoi fare da solo.

30

Il mio ultimo progetto, abbiamo iniziato su CruiseControl. Che ha scosso. Poi ci siamo trasferiti a Hudson, che ha fatto ancora più rock. Le cose che mi sono piaciute di Hudson:

  • I progetti upstream e downstream. Quindi un commit al tuo codice di accesso ai dati finirà per innescare anche una build del livello di presentazione.

  • Utilizza facilmente un progetto esistente come punto di partenza di uno nuovo, quindi se hai l'abitudine di creare rami di sviluppo, assicurati che siano costantemente integrati.

+4

+1, totalmente d'accordo, specialmente attorno al secondo punto. Abbiamo finito per utilizzare Hudson per un sacco di cose a causa di questo (altro su di esso: http://stackoverflow.com/questions/604385/what-is-the-difference-between-hudson-and-cruisecontrol-for- java-projects/888054 # 888054) – Jonik

+1

Per quanto riguarda il secondo punto, "[u] s [ing] un progetto esistente come punto di partenza per uno nuovo" è facile anche con CC: basta copiare i file pertinenti, apportare le modifiche appropriate e registrare il nuovo progetto in 'ccnet.config'. Abbastanza semplice davvero. "Facilmente" in questo caso potrebbe essere "facilmente" in generale quando si considera Jenkins su CC - eseguendolo in una GUI rispetto ai file XML. TMTOWTDI, ma nessuno dei due è particolarmente difficile. – J0e3gan

3

Hudson è l'alternativa più user-friendly a mio parere. Può essere configurato e gestito completamente tramite l'interfaccia web (a parte l'installazione iniziale dell'app Web, ovviamente).

L'unico modo per dirlo è CruiseControl se si conta l'editor di file XML incorporato.

Tuttavia, dopo averli usati entrambi, preferirei che nessuno avesse una build automatizzata.

+0

"Comunque, dopo averli usati entrambi, preferirei che nessuno avesse una build automatizzata." +1 per una misura di sanità mentale. Tra la rabbia e l'alta religiosità che circonda Jenkins negli ultimi tempi, la gente sembra troppo spesso dimenticare che CC, Jenkins e altre alternative mature di CI sono i mezzi per un fine: la fine in definitiva è ciò che conta più dei mezzi. Personalmente, trovo che CC sia facile da usare anche se relativamente nuovo. Anche Jenkins va bene. Ma fare un così grande affare uno contro l'altro è molto rumore per nulla IMO. – J0e3gan

4

Ho guardato Cruise Control e Hudson, ma ho scelto Hudson perché era molto più semplice da configurare e configurare. Hudson sembra molto usato in questi giorni con versioni regolari e molta estensibilità attraverso i plugin. Lo consiglio vivamente.

117

Sono d'accordo con this answer, ma volevo aggiungere alcuni punti.

Insomma, Hudson (aggiornamento: Jenkins) è probabilmente la scelta migliore ora.Innanzitutto perché creare e configurare lavori ("progetti" nel vocabolario CC) è solo molto più veloce attraverso l'interfaccia utente web di Hudson, rispetto alla modifica del file di configurazione XML di CruiseControl (che abbiamo usato per mantenere il controllo della versione solo per tenerne traccia meglio). Quest'ultima non è particolarmente difficile - è semplicemente più lenta e noiosa.

CruiseControl è stato grande, ma come notato nel post sul blog appropriatamente chiamato Dan Dyer, Why are you still not using Hudson?, soffre di essere primi. (Come la Gran Bretagna, se lo farai, più tardi nella rivoluzione industriale, quando altri hanno iniziato a superarlo con nuove tecnologie.)

Abbiamo usato CruiseControl pesantemente e siamo passati gradualmente a Hudson, finalmente usandolo esclusivamente. E ancora più: nel processo abbiamo iniziato a utilizzare il server CI per molte altre cose rispetto a prima, perché l'impostazione e la gestione dei lavori Hudson è così comoda. (Abbiamo ora più di 40 posti di lavoro in Hudson: la solita build & lavori di test per rami stabili e di sviluppo, lavori relativi al rilascio (creazione di programmi di installazione ecc.) Lavori che eseguono alcune metriche (sperimentali) contro il codebase;) UI o test di integrazione rispetto a una versione specifica del database e così via.)

Da questa esperienza direi che anche se hai un sacco di build, compresi quelli complicati, Hudson è una scelta abbastanza sicura perché, come CC , puoi usarlo per fare qualsiasi cosa, in pratica. Basta configurare il tuo lavoro per eseguire qualsiasi target Ant o Maven, script di shell Unix o script .bat di Windows, nell'ordine che desideri.

Per quanto riguarda il materiale di terze parti (mentioned here by Jeffrey Fredrick), questo è un buon punto, ma la mia impressione è che Hudson stia recuperando rapidamente e che ci sia già un numero molto grande di plugins available.

Per me, le due cose che posso nome che mi manca di CruiseControl sono:

  1. I suoi messaggi di posta elettronica di avviso su Broken build erano più informativi di quelli di Hudson. Nella maggior parte dei casi, la causa principale era evidente dalla stessa mail HTML ben formattata di CC, mentre con Hudson solitamente dovevo seguire il link all'interfaccia utente web di Hudson e fare un piccolo clic per ottenere i dettagli.
  2. Il CruiseControl dashboard è più adatto, come una "information radiator" (mostrato su un monitor pubblico, o proiettato su una parete, in modo da poter vedere rapidamente lo stato di tutti i progetti). Con la prima pagina di Hudson, avevamo bisogno di alcuni trucchetti Greasemonkey per ottenere le righe di lavoro tutte ben verdi/rosse.

Disclaimer di minore entità: non ho seguito da vicino il progetto CC da circa un anno. (Ma da un quick look, ma non è cambiato in alcun modo drammatico.)

Nota (2011-02-03): Hudson è stato renamed/forked come Jenkins (da Hudson creatore Kohsuke Kawaguchi e altri). Sembra che Oracle, che controlla il nome di Hudson, manterrà "Hudson" in giro, ma la mia raccomandazione personale è di andare con Jenkins, non importa cosa dice Oracle.

+16

Quasi 2 anni dopo, sono ancora d'accordo con tutto ciò che ho scritto sopra su Hudson ([ora rinominato in Jenkins] (http://jenkins-ci.org/content/hudsons-future)). Come appendice, ecco alcune cose più interessanti che ho usato per Hudson da allora: lanciare nuove istanze AWS EC2 da alcune AMI e distribuire il nostro ultimo software direttamente dal controllo di versione; Lascia che il cliente (esperto di tecnologia) controlli l'aspetto di un'applicazione demo (modificando un file di configurazione che l'app utilizza) ed esegua determinate operazioni di amministrazione sul database utilizzato dall'app (i lavori parametrizzati sono utili) ... (continua) – Jonik

+1

... Controllare periodicamente che un sito Web o un servizio sia attivo e in esecuzione; Unisci automaticamente le modifiche dal tronco a tutti i rami di lavoro subito dopo una compilazione del tronco corretta; e così via. Vale la pena notare che nella maggior parte dei casi Hudson era semplicemente un ** front-end ** per uno script shell/Python/etc, o un sostituto più "visibile" per un cronjob. Ma poi, è molto buono per tali scopi! In un progetto, il cliente chiedeva espressamente altri lavori Hudson per le operazioni di amministrazione/pulizia dopo che ne avevo fatto uno; per i loro bisogni, era perfettamente adeguato e molto più pratico di accedere a un server per eseguire uno script. – Jonik

1

Ho provato il controllo della velocità di crociera ... È buono ... Ma i documenti sono frammentati. Il cruscotto è confuso. Anche la creazione di widget è confusa. Non ho mai provato hudson. Ci proverò il fine settimana.

0

Recentemente ho installato Jenkins per la realizzazione dei progetti Borland BDS 2006 che utilizzano Subversion e sono molto soddisfatto. Non ho mai usato CruiseControl ancora, quindi non posso confrontare. Leggi il mio post sul blog per ulteriori informazioni.

Continuous integration of Delphi project with Jenkins

Problemi correlati