2010-10-05 7 views
18

Sto esaminando gli strumenti di build da utilizzare con un'applicazione ASP.NET MVC 2. Mi piace l'idea di usare un linguaggio di scripting piuttosto che XML, e ho ristretto le mie scelte fino a psake o rake. Non ho molta esperienza con Ruby o PowerShell, ma sono disposto a imparare. Non mi dispiace installare Ruby sul mio server di build se questa è la mia migliore opzione.psake contro rake per .NET build

Niente di troppo complicato o inusuale per la mia build. Dovrà estrarre la mia fonte da un repository Mercurial, creare una soluzione di Visual Studio 10, eseguire alcune trasformazioni di file di configurazione, creare/eseguire uno script SQL basato su un progetto Database (Data Dude), replicare la pubblicazione Web di VS e probabilmente fai qualche altra sincronizzazione di base dei file.

Chiunque ha esperienza sia con rake che con psake che potrebbe confrontarli? Si ha uno svantaggio rispetto alle altre in termini di funzionalità o si riduce alla preferenza della lingua di scripting?

Grazie in anticipo.

MODIFICA: Non ho ancora installato una soluzione CI, ma mi sto orientando verso l'utilizzo di TeamCity. Ho pensato di menzionarlo nel caso in cui uno strumento di costruzione suoni più bene dell'altro.

risposta

18

Se non lo hai fatto, dai un'occhiata al mio progetto Albacore. è una suite di attività di rake per la creazione di soluzioni .NET e renderà il lavoro con Rake molto più semplice per le soluzioni .NET. È possibile ottenere tutte le informazioni necessarie da http://albacorebuild.net

detto questo - ho ovviamente il mio pregiudizio e preferenze per quale strumento preferirei utilizzare. in modo da prendere questo con un grano di sale e di comprendere le mie preferenze ...

..................

Onestamente credo che sia meno una domanda di cui lo strumento fa quello che vuoi, e più una domanda su quale strumento si adatta alle tue abilità e al tuo livello di comfort. sia psake che rake + albacore hanno praticamente la stessa funzionalità. entrambi funzionano molto bene. entrambi rendono il tuo lavoro molto semplice rispetto ad altri strumenti. ma hanno approcci diversi e set mentali, in base al loro background e da dove provengono.

Sei più a tuo agio con una serie di strumenti che è tutta la piattaforma Microsoft? oppure ti trovi a tuo agio con strumenti esterni al tipico stack MS, ma dai valore alle persone che stanno creando software nello stack MS.

Preferiresti avere il supporto per lo strumento di compilazione appena estratto dalla confezione, con powershell? Preferiresti avere un'esperienza simile a un C#, con la possibilità di incorporare C# e altro codice .NET nel tuo processo di compilazione? vuoi la possibilità di utilizzare i vari plugin per PowerShell che aiutano ad automatizzare vari aspetti di Windows, per le implementazioni?

o preferiresti avere un sistema multipiattaforma e molto aperto che ti offre un'esperienza di linguaggio più naturale con il codice che scrivi, in ruby ​​/ rake? siete a vostro agio con gli strumenti e i comandi in stile * nix, ssh e l'esecuzione del processo remoto per le vostre implementazioni?

dici che non ti dispiace installare ruby ​​sul server di build, che risponde a una parte di questa domanda e ti lascia aperto alle opzioni. ci sono ancora molte domande che devono ancora essere risolte.

se si è più a proprio agio con lo stack MS e si desidera l'esperienza immediata di uno strumento basato su MS, utilizzare PowerShell. se vuoi espandere i tuoi orizzonti e uscire dallo stack MS, con un set di strumenti che è facile da integrare e lavorare, per avere un'idea di cosa è il mondo Ruby, quindi vai con ruby ​​/ rake/tonno bianco.

spero che questo aiuti, anche se non ti ho dato una risposta diretta su quale usare. spero di averti dato abbastanza per riflettere su quale sia il migliore per te/la tua squadra, comunque.

+0

Grazie a Derick e James, sempre bello ottenere risposte direttamente dalle bocche dei cavalli! Anche se non ho avuto problemi ad uscire dallo stack MS, ho finito per andare con psake. La portabilità e l'ampiezza dei cmdlet disponibili hanno vinto alla fine, e anche se PowerShell non riesce a toccare Ruby nel reparto cool, è un linguaggio piccolo ed espressivo a pieno titolo e molto adeguato alle mie esigenze. Grazie ancora! –

+0

ya - i cmdlet sono incredibili piccole cose. usiamo PowerShell per i nostri deploys automatizzati, ed è abbastanza meraviglioso. lo strumento giusto per il lavoro, giusto? :) –

24

Sarei d'accordo con la valutazione di Derick. Dipende davvero dal fatto che tu e il tuo team vi sentiate più a vostro agio con Ruby o PowerShell (e anche se vedete più valore nell'apprendimento). Entrambi hanno i loro punti di forza e di debolezza. O è meglio di XML IMHO. E come ha detto Derick, anch'io ho il mio pregiudizio perché sono l'autore originale di psake. :)

Alcuni vantaggi di psake/PowerShell:

  1. PowerShell è già installato su Windows 7 e Server 2008. facilmente installato su XP e 2003.
  2. facilmente in dotazione con la soluzione di controllo di versione. (Meno parti mobili.)
  3. È possibile prendere una riga di comando di PowerShell e incollarla vertabim in un'attività psake.
  4. Microsoft e terze parti creano molti cmdlet.
  5. I tuoi ragazzi/ragazze IT probabilmente conoscono un po 'di PowerShell, il che potrebbe farli sentire più a loro agio durante l'automazione delle distribuzioni. (Lo script di distribuzione non è una scatola nera tale.)

Alcuni vantaggi di rake/Rubino:

  1. Rake ha una comunità più ampia in quanto è ampiamente utilizzato attraverso la comunità di Ruby.
  2. Ruby è un linguaggio più espressivo di PowerShell, anche se probabilmente si desidera mantenere le cose semplici negli script di compilazione.
  3. Albacore semplifica notevolmente la creazione di progetti .NET con rastrello.
  4. Rake ha un bel meccanismo di namespace per raggruppare le attività.

Entrambe le soluzioni funzionano per ottenere la soluzione. Scegli quello che funziona per la tua squadra. Spero possa aiutare.

+2

usiamo PowerShell per le nostre implementazioni ora. nella valutazione tra ruby ​​/ rastrello/capistrano/chef e powershell con tutti i suoi cmdlet, powershell ha avuto il maggior senso per tutti i motivi che hai elencato. è davvero bello per quel genere di cose su una scatola di Windows. ma usiamo ancora ruby ​​/ rake/albacore per le build :) –

+0

Sono un grande fan di Powerhsell e quindi Psake è stata la scelta naturale per i miei progetti.Un sistema di costruzione imperativo è una boccata d'aria fresca rispetto ai più tradizionali sistemi di costruzione dichiarativa. –

0

Attualmente sto sviluppando strumenti di build basati su PowerShell che combinano la configurazione XML con la possibilità di utilizzare ed estendere il sistema con PowerShell stesso. Voglio avere un semplice strumento di compilazione che può essere esteso e personalizzato per adattarsi alla maggior parte dei processi di creazione. Ecco la pagina di esempio del progetto:

Crawler-Lib Build-Tools Samples