CruiseControl [.Net] vs TeamCity per l'integrazione continua?


117

Vorrei chiederti quale ambiente di build automatizzato consideri migliore, sulla base dell'esperienza pratica. Sto progettando di fare un po 'di sviluppo .Net e un po' di Java, quindi mi piacerebbe avere uno strumento che supporti entrambe queste piattaforme.

Ho letto e scoperto CruiseControl.NET , utilizzato per lo sviluppo di stackoverflow , e TeamCity con il suo supporto per gli agenti di compilazione su diverse piattaforme OS e basato su diversi linguaggi di programmazione. Quindi, se hai qualche esperienza pratica su entrambi, quale preferisci e perché?

Attualmente, sono principalmente interessato alla facilità d'uso e alla gestione dello strumento, molto meno al fatto che CC è open source e TC è soggetto a licenza a un certo punto quando hai molti progetti da eseguire (perché, io ne ho bisogno per una piccola quantità di progetti).

Inoltre, se c'è qualche altro strumento che soddisfa quanto sopra e ritieni che valga la pena di essere raccomandato, sentiti libero di includerlo nella discussione.

Risposte:


111

Ho lavorato su e con strumenti di integrazione continua da quello che ha generato Cruise Control (versione java). Ad un certo punto li ho provati quasi tutti. Non sono mai stato più felice di quanto lo sia con TeamCity. È molto semplice da configurare e fornisce comunque una grande potenza. La pagina delle statistiche di compilazione che mostra i tempi di compilazione, il conteggio degli unit test, la percentuale di passaggi ecc. È molto carina. Anche la home page del progetto TeamCity è molto preziosa. Per semplici progetti .NET puoi semplicemente dire a TeamCity dove si trova la soluzione e quali assembly hanno i test e questo è tutto ciò di cui ha bisogno (oltre alla posizione del controllo del codice sorgente). Abbiamo anche usato alcuni complicati script MSBuild con esso e fatto costruire il concatenamento. Ho anche superato due aggiornamenti di TeamCity ed erano indolori.

Anche CruiseControl.NET funziona bene. È più complicato da configurare ma ha una cronologia più lunga, quindi è facile trovare soluzioni sul web. Poiché CruiseControl.NET è open source, hai anche la possibilità di aggiungere o modificare ciò che preferisci. Avevo usato CruiseControl.NET sin dal suo rilascio e ho scritto parte del codice iniziale per cc.tray (per fortuna riscritto da qualcuno che lo sapeva meglio).

Anche Cruise, di ThoughtWorks, sembra abbastanza buono ma non vedo un motivo convincente per cambiare. Se dovessi iniziare un nuovo progetto potrei provarlo, ma TeamCity ha fatto un ottimo lavoro nel rendere semplici le cose semplici rendendo il complesso abbastanza indolore.

Modifica: abbiamo appena eseguito l'aggiornamento a TeamCity 5.0 poche settimane fa ed è stato un altro aggiornamento indolore. Ci ha consentito di sfruttare le capacità di copertura del codice migliorate e il supporto GIT. Ora stiamo anche utilizzando la build personale e le funzionalità di commit pre-testate che sono presenti da un po 'di tempo. Ho solo pensato di dover aggiornare la risposta per indicare che TeamCity continua a migliorare ed è ancora facile da usare.


mi chiedo se con tutta la tua esperienza potresti avere un po 'di condivisione di uno screencast per creare un semplice progetto .NET su di esso e lavorare con TeamCity (usando JING (screencasting gratuito) o un altro strumento) e pubblicare il link qui o da qualche parte così io e tutti noi che lottiamo con esso avremo una buona partenza :) Grazie.
balexandre

2
@balexandre - Ho trovato i documenti di Team City piuttosto buoni. E la risposta di @ boj ha fornito un collegamento a un buon cast dello schermo qui blog.wekeroad.com/kona/kona-2
Mike Two

Ho sempre avuto paura di CI a causa dell'immagine di CCNet che avevo, la scorsa settimana ho provato TeamCity 6.5 ed è stata una gioia assoluta. non ha toccato un singolo file xml / configurazione.
kay.one

1
Se stai attualmente utilizzando CC.Net e desideri trasferirti a Team City, è doloroso? In che modo TC produce file MSI?
Wes

@Wes, non so se questo sia ancora rilevante per te, ma abbiamo più di 20 progetti in esecuzione in CC.Net, ma recentemente ho implementato TeamCity per alcuni progetti Android che abbiamo. Il dolore più grande in assoluto è stato imparare Ant, ma è qualcosa che avrei dovuto fare se avessi messo i progetti in CC.Net. Sposterei felicemente tutti i nostri progetti in TeamCity se potessi convincere la direzione a pagare per le configurazioni di build extra di cui avremmo bisogno (è gratuito fino a un certo punto), principalmente a causa della configurazione, che è un gioco da ragazzi in TeamCity e un pantano XML in CC. Netto.
johnc

33

Ero / sono un grande fan di CC.NET. Al momento abbiamo 5 progetti in CruiseControl e funziona alla grande. Scrivere i file di configurazione con la mano può essere doloroso ma va bene.

Ma .

Dopo lo screencast Kona: Continuous Integration e Better Unit Testing (il primo 1/3 su TeamCity) controllerò anche TeamCity. Adoro la dashboard di unit test integrata e l'interfaccia di configurazione.

Penso che tutti dovrebbero guardare questo video prima di scegliere CC.NET o TeamCity.

ps: spero che in rete ci sia anche un prezioso video CC.NET.


15

Il mio server CI preferito di gran lunga è Hudson. Facile da configurare e mantenere, molti bei grafici per mostrare le tendenze a sviluppatori e non sviluppatori e gratuito.

Attualmente sto utilizzando TeamCity su un progetto e generalmente ne sono soddisfatto, ma molti dei grafici che genera non sono particolarmente utili ed è più complicato da configurare rispetto a Hudson.

Detto questo, TeamCity è potente, gratuito per molti usi e ha una funzione killer: Remote Run. Puoi effettuare il "pre-commit" del check in direttamente da IDEA o Eclipse, eseguire una o più configurazioni di build sul server TeamCity e eseguire il commit delle modifiche solo se la build ha esito positivo (ad esempio, la compilazione e tutti i test passano).

Dato che potresti far funzionare sia TeamCity che Hudson in poche ore, potrebbe valere la pena prenderli entrambi e eseguirli fianco a fianco, insieme a qualsiasi altro (come CruiseControl) a cui puoi pensare. Se non riesci a sostenere rapidamente un server CI per eseguire un confronto fianco a fianco, almeno hai un punto dati per una facile installazione e / o configurazione.


6
+1 per Hudson. Vedi anche: utilizzo di Hudson come strumento di compilazione .NET: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/...
Jonik

12

Li ho usati entrambi con successo su diversi progetti. Dal punto di vista della configurazione e dell'amministrazione, Team City è molto più facile da gestire. Non devi hackerare con i file .config come fai con CC e l'installazione è un gioco da ragazzi. Dato che non hai molti progetti, consiglierei Team City su CC finché non arrivi al punto che Team City costa $$.


12

Ho usato sia CC.net che TeamCity. Ho il compito di configurare e installare TeamCity per la mia organizzazione (5 sviluppatori). La nostra organizzazione utilizza alcune pratiche e strumenti non comuni (almeno per le organizzazioni delle nostre dimensioni), come Perforce per il controllo del codice sorgente e più agenti di compilazione in esecuzione su sistemi operativi eterogenei, che hanno causato alcuni problemi di configurazione iniziale. Tuttavia, il supporto via e-mail è stato assolutamente di prim'ordine per impostare tutto. Ho ricevuto risposte alle mie stupide domande in pochi minuti.

L'interfaccia è intuitiva e reattiva, oltre che ricca di funzionalità. Il prodotto sembra molto costoso. La configurazione è semplice e l'interfaccia web è sufficientemente intelligente da aggiornarsi senza dover riavviare l'agente o i servizi del server, o anche aggiornare la pagina.

Sento che stiamo utilizzando quasi tutte le funzionalità avanzate del prodotto e finora non abbiamo trovato alcun bug. Integrazione indipendente, script NAnt annidati, etichettatura della versione Perforce, lo chiami, lo stiamo facendo.

Consiglio vivamente TeamCity a chiunque cerchi un server di integrazione continua o qualsiasi server di build, davvero.


Perforce è uno strumento non uomo? Perforce è fantastico per team di qualsiasi dimensione. Lo uso io stesso per il mio sviluppo domestico :)
sonstabo

@sonstabo, sono d'accordo, la maggior parte delle piccole aziende utilizza SVN o GIT e Perforce viene utilizzato principalmente nelle aziende più grandi. Ho usato Perforce e mi è piaciuto, ma ero in un'azienda di 1.000 sviluppatori quando l'ho usato.
Samuel Neff

3

Senza volerti lanciare strumenti alternativi :-)

Hudson è un'ottima alternativa open source, ho usato CC e CC.net e confesso che penso che siano strumenti fantastici. Sto pensando di passare a Hudson in quanto sembra molto più facile da configurare e mantenere.

https://hudson.dev.java.net/


1
+1 Dato che nessuno sembra pensare a Hudson per .Net CI. Ho usato Cruise Control, Team City e Bamboo e ho trovato Hudson lo strumento migliore per il lavoro nella maggior parte dei casi in cui il budget è una grande preoccupazione.
Dan Rigby,

3

Assicurati che il sistema che decidi si adatti al numero di progetti che ti serviranno per gestire ...

Uso CruiseControl.Net ma non lo consiglierei per la costruzione di molti progetti ... Ho una disposizione (forse un po 'strana) in cui ho molte librerie statiche C ++ che compongo in applicazioni. Ogni libreria dipende da altre librerie e le app inseriscono un set di librerie e build. Ogni libreria ha una suite di test. Ogni app ha una suite di test. Realizzo per 5 compilatori e varianti di piattaforme (Windows).

La prima cosa che ho scoperto è che i trigger di progetto di CC.Net non sono proprio ciò di cui hai bisogno e il multi-trigger non funziona bene con i trigger di progetto. Il modo in cui funzionano i trigger del progetto (usano il telecomando per connettersi al server in cui è archiviato il progetto (anche se si tratta di un progetto gestito dalla stessa istanza di CC.Net), quindi estrarre tutti i progetti da quel server e cercare l'elenco in sequenza cercando il progetto che ti interessa ...) significa che non si adattano bene. Una volta superato un certo numero di progetti, scoprirai che CC.Net sta prendendo la maggior parte della CPU per la tua macchina di compilazione.

Ovviamente è open source, quindi puoi risolverlo ... E sono sicuro che va bene per un piccolo numero di progetti non interdipendenti.

Per maggiori dettagli sui problemi che ho avuto e alcune patch per CC.Net vedi qui http://www.lenholgate.com/archives/cat_ccnet.html


oh ... grazie per queste informazioni, prezioso post. soprattutto quando si dice che TC è una configurazione semplice e il suo limite è il numero di progetti, in cui CC e CC.Net potrebbero entrare in gioco. ma come dici tu, si
creano

Anche nella mia versione pesantemente compromessa di CC.Net ho problemi perché CC.Net utilizza un approccio thread per progetto alla pianificazione e, beh, questo è solo uno schifo di design IMHO.
Len Holgate,

2

Recentemente ho installato cc .net. È un'ottima applicazione ma richiede un po 'di pazienza. Modificherai molto i file di configurazione nel blocco note :)

È in circolazione da un po 'di tempo quindi è ben supportato e normalmente puoi trovare qualcuno che ha fatto quello che vuoi fare prima. Anche l'interfaccia web è .net, il che è stato un vantaggio per noi dato che siamo un negozio Microsoft.

Non ho usato TeamCity ma ho sentito alcuni consigli su di esso e sembra carino.


2

Ho avuto un'esperienza nell'installazione e nell'esecuzione di CruiseControl (versione Java) su Linux durante la mia precedente azienda. Come la maggior parte delle persone suggerisce, non è la cosa più banale da configurare. È necessario comprendere il suo framework per trovare la configurazione funzionante / gestibile. Tuttavia, una volta superato quel gobbo, sento che CruiseControl è abbastanza flessibile da consentirti di fare diversi tipi di cose per adattarsi a diversi scenari.

Inoltre, la documentazione di CruiseControl, la sua pagina wiki anche alcune informazioni utili.

Non ho un'esperienza diretta con TeamCity. Anche se la sua funzione di commit pre-test sembra abbastanza interessante.

L'altro strumento CC a cui potresti dare un'occhiata è Bamboo di Atlassian. È molto più facile da configurare e l'interfaccia è più bella. Tuttavia, non è flessibile come quello che offre CruiseControl.


1

Una terza opzione che potresti prendere in considerazione: Thoughtworks 'Cruise. È costruito su CruiseControl, ma offre molte più funzionalità, una configurazione più semplice, ecc. Ecc. Non gratuito (o open source).

http://studios.thoughtworks.com/cruise-continuous-integration


1
Ho esaminato Cruise alcune volte quando si tratta di configurare un sistema CI. non è molto più semplice di CC.NET, ad esempio. Ha i suoi punti di forza nella creazione e distribuzione dei flussi, ma come strumento CI cosa TeamCity è molto più competente
haqwin

Se hai intenzione di pagare per Cruise / Go, puoi anche ottenere TeamCity gratuitamente.
Niall Connaughton

0

Uso Teamcity da un anno e mezzo e ho una grande esperienza. Ho integrato una serie di progetti .Net e Java e ho utilizzato strumenti come MSBuild, Maven ecc. Ho trovato Teamcity piuttosto semplice da configurare e utilizzare. Sono riuscito a far funzionare CI anche per alcuni progetti sql, il che è stato un po 'un incubo che avrebbe potuto essere peggiore con altri strumenti CI.
Aggiornato di recente a Teamcity 8.0.6 che è stato indolore. Anche Teamcity fornisce un'API REST che è molto utile per alcuni scenari. Se utilizzi PowerShell per automatizzare le build, su GitHub sono disponibili numerosi script di integrazione Psake / Teamcity

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.