Piattaforma di build automatizzata per il portfolio .NET: la scelta migliore? [chiuso]

10

Sono coinvolto nel mantenimento di un portafoglio abbastanza ampio di applicazioni .NET. Inoltre nel portfolio ci sono applicazioni legacy costruite su altre piattaforme: C ++ nativo, moduli ECLIPS, ecc.

In questo momento ho un framework di build complesso su NAnt che gestisce le build per tutte queste applicazioni. Il framework di build usa NAnt per fare una serie di cose diverse:

  • Estrai il codice da Subversion e crea tag in Subversion
  • Crea il codice, utilizzando MSBuild per .NET o altri compilatori per altre piattaforme
  • Dai un'occhiata ai file AssemblyInfo per incrementare i numeri di versione
  • Elimina alcuni file che non dovrebbero essere inclusi nelle versioni / versioni
  • Rilascia il codice nelle cartelle di implementazione
  • Le cerniere si aprono a scopo di backup
  • Distribuisci i servizi di Windows; avviali e fermali
  • Etc.

Molte di queste cose possono essere fatte solo con NAnt da sole, ma abbiamo creato un paio di attività di estensione per NAnt per fare alcune cose specifiche per il nostro ambiente. Inoltre, la maggior parte di questi processi sopra sono generati e riutilizzati in molti dei nostri script di compilazione di applicazioni, in modo da non ripetere la logica. Quindi non è semplice codice NAnt e non semplici script di compilazione. Ci sono dozzine di file NAnt che si uniscono per eseguire una build.

Ultimamente sono stato insoddisfatto di NAnt per un paio di motivi: (1) la sintassi è semplicemente terribile - i linguaggi di programmazione su XML sono davvero orribili da mantenere, (2) il progetto sembra essere morto sulla vite; non ci sono stati un sacco di aggiornamenti ultimamente e sembra che nessuno sia davvero al timone. Cercando di farlo funzionare con .NET 4 ha causato alcuni punti deboli a causa di questa mancanza di attività.

Quindi, con tutto questo sottosquadro, ecco la mia domanda. Considerate alcune delle cose che voglio realizzare sulla base di quella lista di cui sopra, e dato che sono principalmente in un negozio .NET, ma ho anche bisogno di creare progetti non.NET, c'è un'alternativa a NAnt che dovrei considerare passare a?

Le cose sul mio radar includono Powershell (con o senza psake ), MSBuild di per sé, e rake . Tutti hanno pro e contro. Ad esempio, MSBuild è abbastanza potente? Ricordo di averlo usato anni fa e non sembrava avere più potere di NAnt. Voglio davvero che il mio team impari Ruby solo per creare build usando rake? È abbastanza maturo un progetto per appuntare il mio portafoglio? Powershell è "troppo vicino al metallo" e finirò per dover scrivere la mia libreria di build simile a psake per usarlo da solo?

Ci sono altri strumenti che dovrei considerare? Se tu fossi coinvolto nel mantenimento di un portafoglio .NET di notevole complessità, quale strumento di sviluppo vorresti considerare? Cosa usa attualmente la tua squadra?

    
posta RationalGeek 04.01.2011 - 15:53
fonte

9 risposte

2

Se stai già utilizzando TeamCity, dovresti essere in grado di utilizzare le sue funzionalità esistenti per la maggior parte di ciò che ti serve. Supporta nativamente la creazione di file .sln di Visual Studio e, se hai bisogno di qualcosa in più su tutti i tuoi progetti, puoi modificare i file .targets di .NET Framework sulle macchine di generazione, in modo da non dover modificare i singoli file csproj.

Verificherà automaticamente da Subversion, artefatti da zip, ti permetterà di controllare quali file sono considerati artefatti deployabili. La nuova versione (6.0) consente inoltre più passaggi di generazione, quindi c'è la possibilità di distribuire xcopy di risorse in una condivisione.

Puoi anche scrivere le tue app / attività che possono essere eseguite come parte di una build (tramite il runner della riga di comando) e fare tutto ciò che vuoi (come avviare / fermare i processi di Windows).

    
risposta data 04.01.2011 - 16:44
fonte
3

Ci avviciniamo alle cose come tre diverse attività, Build, Deploy e Install. Usiamo TFS per il server di build con alcuni callout su PowerShell. Quindi usiamo Powershell per realizzare tutti i pezzi Deploy and Install che sono abbastanza complessi e su più server sia locali che cloud. Sono stato molto felice di aver imparato Powershell su MSBuild o qualche altro strumento. Ho anche avuto una buona esperienza con Visual Build in passato.

    
risposta data 04.01.2011 - 19:56
fonte
2

Dai un'occhiata a hudson e MSBuild in coppia. Il potere viene fornito con le potenti funzionalità di MSBuild e i plugins di hudson.

Ad esempio, potresti usare hudson ed eseguire i tuoi script NAnt fino alla tua migrazione a MSBuild e poi eseguire anche gli script MSBuild.

Affrontare in modo specifico i tuoi punti:

  • Subversion e Tagging
  • MSBuild
  • Sbirciando in AssemblyInfo era ha chiesto su SO, ma la soluzione potrebbe non essere di vostro gradimento
  • MSBuild può eliminare i file con facilità
  • "Rilascio del codice alle cartelle di distribuzione": è possibile fare in modo che il sistema di generazione salti tale passaggio e lo distribuisca automaticamente utilizzando un numero di metodi. Oppure puoi FTP se lo desideri.
  • MSBuild può comprimere
  • Servizi Windows, di nuovo MSBuild è tuo amico qui.
risposta data 04.01.2011 - 16:21
fonte
2

Uso Automated Build Studio . Voglio liberarmene.

L'unico motivo per cui non passo al 100% MS Build o Team Foundation Build è il costo che comporta la ricostruzione degli script che funziona perfettamente oggi. Gli script non cambiano molto ...

Tuttavia, per il prossimo prodotto, questo sarà Team Foundation Build senza alcuna esitazione per i seguenti motivi principali (sono molti di più):

  • È facile da implementare (ultima versione: 2010)
  • È completamente integrato con Visual Studio e Team Foundation Server
  • Sta diventando uno standard come MS Build
  • È gratuito con Bizspark (per le startup)

Dato che sei anche in .NET, ti raccomando caldamente di usare TFB.

Se non puoi presentare domanda per Bizspark o non puoi permetterti di acquistare la licenza, puoi utilizzare CruiseControl.NET + MS Build e pochi script di supporto. In una grande azienda di servizi per cui ho lavorato, abbiamo utilizzato CruiseControl.NET per creare, testare, implementare e segnalare tutti i nostri progetti. Include la distribuzione automatica dei servizi Web.

    
risposta data 04.01.2011 - 16:04
fonte
2

FinalBuilder può fare tutti gli elementi richiesti, con una bella GUI e un'applicazione builder server lanciata gratuitamente .

    
risposta data 05.01.2011 - 00:47
fonte
2

Attualmente sto facendo quello che stai facendo (vale a dire dalla build alla pacchettizzazione alla distribuzione) usando MSBuild (> 3000 linee di script). L'IC utilizza CruiseControl.Net e spero di poter passare a TeamBuild in futuro. MSBuild è ingombrante (programmazione in XML) ma è piuttosto potente specialmente per l'elaborazione in batch e il monitoraggio delle dipendenze. È attivamente mantenuto e migliorato nelle nuove versioni .Net ed è la base del sistema di compilazione in Visual Studio e TFS. Anche i file di progetto di Visual Studio sono in realtà progetti MSBuild e posso collegarmi a vari punti di estensione. Il pacchetto di estensione MSBuild ha molte attività aggiuntive ed è banalmente facile creare le proprie attività in modo programmatico. Suggerisco di dare a MSBuild un pensiero serio. Ultimamente sto anche imparando PowerShell e trovando facile per certe attività specialmente nella fase di distribuzione, come l'installazione e la configurazione di certificati, IIS ecc.

Modifica il progetto MSBuild in VisualStudio in quanto comprende la sintassi e ti dà intelligenza.Qui ci sono altre buone utilità che ti aiuteranno con MSBuild.
MSBuild Launch Pad - Per le estensioni della shell
MSBuild SideKicks - Modificare graficamente, eseguire ed eseguire il debug degli script .

    
risposta data 05.01.2011 - 05:25
fonte
1

Forse stai chiedendo troppo del tuo script di build e non abbastanza del tuo build server - con team city, potresti facilmente avere degli script semplici che realizzano ognuno dei tuoi proiettili, in qualsiasi lingua o stack che abbia senso e usi TeamCity costruisci compiti per mettere insieme le cose come appropriato.

    
risposta data 04.01.2011 - 16:35
fonte
1

Consiglio vivamente TeamCity, è facile da configurare e configurare. MSBuild è preferibile su NAnt per una semplice ragione che tutti i file di progetto / soluzione nel vs2008 / 2010 sono tecnicamente i file MSBuild, ma è possibile configurare TeamCity con MSBuild o NAnt.

OfCourse, TeamCity ti costerà. Personalmente ho dato una scelta preferirebbe il rake, semplicemente perché l'attrito con gli strumenti di Ruby rispetto ad altri anche se psake è anche un buon candidato.

    
risposta data 04.01.2011 - 17:48
fonte
0

Hai considerato Hudson ? Potrebbe essere un po 'complicato, dal momento che richiede l'esecuzione di un app server Java, ma penso che ti possa consentire usa il tuo attuale script NAnt e costruisci sopra usando altri strumenti.

    
risposta data 04.01.2011 - 16:02
fonte

Leggi altre domande sui tag