Domanda

Il mio team sta attualmente cercando di automatizzare la distribuzione delle nostre applicazioni web .Net e PHP.Vogliamo semplificare le distribuzioni ed evitare i problemi e molti grattacapi causati dall'esecuzione manuale.

Abbiamo bisogno di una soluzione che ci permetta di:

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

Tutte le nostre app sono controllate dal codice sorgente tramite SVN e le nostre app .Net utilizzano CruiseControl.Abbiamo provato a utilizzare gli script di distribuzione MSBuild e NAnt con successo limitato.Abbiamo utilizzato anche Capistrano in passato, ma desideriamo evitare di utilizzare Ruby, se possibile.

Esistono altri strumenti di distribuzione che potrebbero aiutarci?

È stato utile?

Soluzione

Grazie a tutti per i vostri gentili suggerimentiLi abbiamo controllati tutti, ma dopo un'attenta considerazione abbiamo deciso di lanciarne uno nostro con una combinazione di CruiseControl, NAnt, MSBuild e MSDeploy.

Questo articolo contiene alcune informazioni utili:Integrazione di MSBuild con CruiseControl.NET

Ecco approssimativamente come funziona la nostra soluzione:

  • Gli sviluppatori creano la versione di "debug" dell'app ed eseguono test unitari, quindi effettuano il check-in su SVN.
  • CruiseControl vede gli aggiornamenti e chiama il nostro script di build...
    • Esegue eventuali nuove migrazioni sul database di compilazione
    • Sostituisce i file di configurazione con la configurazione del server di compilazione
    • Crea la configurazione di "debug" dell'app
    • Esegue tutti i test di unità e di integrazione
    • Crea la configurazione di distribuzione dell'app
      • Versiona le DLL con la versione principale/minore corrente e la revisione SVN, ad es.1.2.0.423
      • Sposta questa nuova build in una cartella "release" sul nostro server di build
      • Rimuove i file non necessari
    • Aggiorna IIS sul server di compilazione, se necessario

Quindi, quando abbiamo verificato che tutto è pronto per essere live/staging, eseguiamo un altro script per:

  • Esegui le migrazioni sul server live/di gestione temporanea
  • MSDeploy:archiviare il sito live/staging corrente
  • MSDeploy:sincronizza il sito dalla creazione al live/staging

Non è stato bello arrivare a questo punto, ma per lo più ora funziona a meraviglia :D

Cercherò di mantenere aggiornata questa risposta man mano che apportiamo modifiche al nostro processo, poiché sembrano esserci molte domande simili su SA ora.

Altri suggerimenti

ho usato Creazione visiva professionale da anni, è abbastanza fluido e facile da usare e ha molte operazioni standard (come quelle che hai citato) integrate.

Io uso Fantoccio, Makefile per creare RPM e Bambù fare questo per me.Il mio sistema non si applica direttamente e non ho familiarità con il mondo Windows, ma esistono alcuni modelli trasferibili.

La mia configurazione make mi consente di creare RPM per tutto (librerie php, siti Web php, moduli perl, app C, ecc.) che compongono la mia app.Questo può essere chiamato manualmente o tramite Bamboo.Trasferisco questi RPM in un repository yum e negli handle di pupazzi assicurandomi che le versioni più recenti (o corrette) del software siano installate nel cluster.

Potresti automatizzare la creazione di pacchetti software in MSI?Penso che Puppet possa gestire l'installazione di pacchetti e versioni software in Windows.

Utilizzo msdeploy per questo.Funziona perfettamente.

A proposito di formica;per la piattaforma .NET abbiamo NAnt e puoi usarlo in combinazione con MSDeploy;hai la possibilità di chiamare MSDeploy dal tuo script Nant.

Modificato:Giusto per chiarire le cose;puoi fare tutto con msdeploy.L'uso di Nant non è un requisito.

Invece di utilizzare xcopy siamo riusciti a utilizzare il comando -source:dirpath con indirizzi UNC sui server con msdeploy.La chiave era ignoreAcls=true e rimuoveva le chiamate a nome utente e password nella stringa msdeploy:

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

L'esempio distribuisce il sito dall'unità E del nostro server di creazione all'unità D sul nostro server live.Esistono alcune considerazioni sulla sicurezza relative all'esposizione delle condivisioni o di questo livello di accesso al disco su un server live.Stiamo attualmente valutando l'utilizzo di una cartella condivisa ad accesso limitato.

Quindi indirizziamo questo output a un file di registro che viene quindi spostato nell'archivio di backup come riferimento.Il file di registro registra quali file sono stati spostati e quando. Continuando l'esempio precedente con il comando pipe di output:

... > E:\archive\msdeploy.log

Nessuno ha menzionato Final Builder http://www.finalbuilder.com.È alla pari con Visual build Pro.Buona GUI per la creazione di cablaggi di distribuzione di build automatizzati

Tessuto.Sembra piccolo, semplice, procedurale.Scritto in Python, poiché Ruby è un no-no (perché?).

Dai un'occhiata a Setup Factory (da indigo rose).È piuttosto robusto in ciò che può fare.Utilizza l'API di installazione di Windows.Probabilmente può fare quello che ti serve.

L'unico motivo per cui Nant dovrebbe esistere è che tu abbia un framework simile ad Ant in cui possiamo scrivere Task utilizzando il set di linguaggi .NET.Se non vuoi che uno sviluppatore .NET puro scriva attività personalizzate, non vedo alcun motivo per cui non puoi utilizzare Ant.Solo perché scrivi la tua applicazione in un linguaggio .NET, non significa che devi utilizzare uno strumento di compilazione .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top