Domanda

Sembra che ci sono così tanti modi diversi di automazione di una generazione/distribuzione che diventa difficile analizzare attraverso tutti i diversi scenari che la gente di supporto nel tutorial sul web.Così ho voluto presentare la domanda di stackoverflow folla ...quale sarebbe il modo migliore per impostare una generazione automatica e sistema di distribuzione utilizzando la seguente configurazione:

  • Visual Studio 2008
  • Progetto Di Applicazione Web
  • CruiseControl.NET

Una delle prime cose che ho provato è stato di avere CCnet automaticamente zip uscita e copiarlo sul server, ma allora che richiede lavoro manuale di decomprimere la destinazione.Tuttavia, se si tenta di copiare tutti i file singolarmente, quindi potenzialmente potrebbe richiedere molto tempo se si tratta di una grande applicazione (server di generazione di una vita al di fuori del data center nel nostro ufficio ...So che).

Inoltre, di particolare interesse è il modo in cui avrebbe il supporto di più ambienti, come abbiamo dev, qa, uat, e poi, naturalmente, prod.

MSDeploy sembra davvero interessante, ma a meno che non sto interpretando la letteratura in modo non corretto, non aiuta nello scenario della distribuzione dalla uscita di un server di generazione.Se non altro, sembra che sarà utile nella distribuzione di costruire tutta una generazione di farm ...ma anche per la distribuzione da un ambiente all'altro, si sarebbe potuto modificare manualmente le impostazioni di configurazione e Url di servizi web, etc.

È stato utile?

Soluzione

Di recente ho trascorso un paio di giorni di lavoro su automazione distribuzioni all'interno della mia azienda.

Usiamo una combinazione di CruiseControl, NAnt, MSBuild per generare una versione dell'app.Quindi uno script separato utilizza MSDeploy e XCopy per il backup del sito vivo e trasferire i nuovi file.

La nostra soluzione è brevemente descritto in una risposta a questa domanda Automatizzare la Distribuzione per le Applicazioni Web?

Altri suggerimenti

Potreste essere interessati MSDeploy. Ecco Scott Hanselman post su questo.E ' disponibile solo come anteprima tecnica al momento (settembre 2008), ma vale la pena valutare contro le vostre esigenze.

C'è un nuovo tool di build (molto intelligente wrapper) chiamato NUBuild.Il suo peso leggero, open source e estremamente facile da installare e fornisce quasi no-touch di manutenzione.Mi piace molto questo nuovo strumento e abbiamo fatto strumento standard per il nostro continuo costruire e processo di integrazione dei nostri progetti (abbiamo circa 400 progetti in tutto 75 sviluppatori).Provare.

http://nubuild.codeplex.com/

  • Facile da usare interfaccia a riga di comando
  • Capacità di rivolgersi a tutti .Net framework versione cioè1.1, 2.0, 3.0 e 3.5
  • Supporta XML di configurazione
  • Supporta sia il progetto e file riferimenti
  • Genera automaticamente il “completo ordinò di costruire la lista” per una determinata progetto – Non toccare la manutenzione.
  • Capacità di rilevare e visualizzare dipendenze circolari
  • Parallelo di costruire - decide automaticamente del progetti in build generato elenco può essere costruita in modo indipendente.
  • Capacità di gestire proxy assemblee
  • Fornisce un indizio visivo a costruire processo, ad es.la mostra “% completato”, “stato attuale” etc.
  • Genera dettagliate del log di esecuzione sia in XML e in formato testo
  • Facilmente integrato con Cruise-Control.Net continua sistema di integrazione
  • Può utilizzare logger personalizzato come XMLLogger quando il targeting 2.0 + versione
  • Capacità di analizzare i log di errore
  • Possibilità di distribuire costruito assembly posizione specificata utente
  • Possibilità di sincronizzare il codice sorgente con la fonte-sistema di controllo
  • Versione capacità di gestione

Avete la possibilità di eseguire comandi da remoto?Il PsExec utilità da Systinternals vorresti far eseguire una riga di comando unzip programma sulla macchina remota.Se si dispone di uno script che copia la build .file zip per il sito remoto, si avrebbe bisogno solo di una linea in più per il PsExec chiamata per decomprimere i file.

Ho avuto un domanda correlata su come ottenere un deploy insieme di file da un sistema automatizzato di costruire.Ho trovato i Progetti di Distribuzione Web (link alla vecchia questione ha fatto quello che avevo bisogno perché sono un VS e MSBuild add-on.

Questo è un problema comune (e vorrei che avevo letto prima) per lo sviluppo, non solo ASP.NET.Essendo uno dei suoi sviluppatori, il mio team, naturalmente, usa BuildMaster internamente l'intero processo di rilascio, e per la maggior parte degli scenari è gratis.All'interno dello strumento, siamo in grado di eseguire tutti gli standard che CI si costruisce creare artefatti e quindi impostare un processo di automazione per la distribuzione di questi artefatti a uno qualsiasi dei 40+ server abbiamo internamente o esternamente ospitato, a seconda della specifica applicazione o ambiente.

Dal momento che è specificamente menzionato la distribuzione di diversi ambienti di test, questo è un aspetto fondamentale dello strumento.L'idea è quella di modellare l'ambiente del flusso di lavoro (ad es.Integrazione -> QA -> Produzione) di cui già si dispone e che, essenzialmente, di promuovere una build tutta la strada dal controllo del codice sorgente per la produzione.La maggior parte delle volte, è semplice come l'aggiunta di un'azione di distribuzione che distribuisce un manufatto per l'ambiente, altre volte può essere molto più complessa.

Si anche casualmente menzionato modifiche al file di configurazione sono parte della distribuzione, che è un altro componente di BuildMaster.L'idea che abbiamo avuto è stata quella di utilizzare lo strumento di per sé come hub centrale per tutti i file di configurazione e implementazioni, garantendo così le ultime modifiche vengono applicate automaticamente con un semplice "distribuire i file di configurazione" azione nel piano di distribuzione.

Una cosa che non ha fatto menzione di riguardo a questo processo è la distribuzione di database aspetto.Più ASP.NET applicazioni richiedono un database associato, altrimenti potrebbe essere solo il file HTML statici.È fondamentale che lo schema del database viene aggiornato il database appropriato versione con ogni distribuzione.Non c'è, non sorprendentemente, un modulo all'interno di BuildMaster che gestisce questo per voi pure.L'idea è quella di memorizzare DDL, DML script all'interno dello strumento stesso, e per l'esecuzione di script solo una volta per ambiente, assicura che tutte le banche dati in ogni ambiente sono up-to-date, come le generazioni, vengono distribuiti attraverso di loro.Altri script (ad es.le stored procedure, viste, trigger, ecc.) sono essenzialmente file di codice e, quindi, appartengono in controllo del codice sorgente.Questi DROP-CREARE-CONFIGURARE il tipo di script può essere eseguito ogni volta che nella maggior parte dei casi con una semplice azione di distribuzione.

Un altro pezzo della distribuzione di puzzle che la maggior parte degli sviluppatori non pensare di automazione di processo.Molti sviluppatori hanno bisogno per eseguire sign-off o compilare moduli per richiesta modifica per eseguire manualmente questi processi.Di nuovo, questo è tutto disponibile come parte del flusso di lavoro automatizzato di installazione all'interno di BuildMaster.È possibile l'installazione di bloccanti che non consentono la promozione a dire il QA ambiente, a meno che tutti gli unit test sono passati, o il blocco di promozione per l'ambiente di gestione temporanea, a meno che qualcuno del team QA approva la costruzione e tutti i problemi problema di strumento di monitoraggio vengono risolti/chiuso per quella particolare versione.

Anche se mi rendo conto che ho lasciato fuori CC.NET dalla risposta, le nostre applicazioni sono tutti costruiti e distribuiti attraverso BuildMaster così non ne abbiamo più bisogno, anche se si potrebbe però facilmente pick-up i manufatti da un percorso di discesa e di distribuirli in seguito ambienti.

Vedo che molte persone usano CC per loro .I progetti in rete, ma perché non usare Jenkins, Sonarqube?Sono dotati di tutto il necessario.Ho configurato tutto questo in 3 giorni.Ho un Win 2008 server R2, MSSQL, Jenkins, VIsual SVN e Sonarqube.

Tutto funziona alla grande e u ottenere tutte le metriche di progetto.Sonarqube utilizza Gallio, Gendarme, FXcop, Stylecop, NDepths e PartCover per ottenere il vostro metriche e tutto questo è abbastanza dritto in avanti, dal momento che SonarQube fare questo automaticamente senza configurazione molto.

i post som immagini per u anche ottenere una sensazione di esso.Qui è Jenkins strega costruisce e ottenere Sonar e metriche di un lavoro all'altro per distribuire automaticamente a IIS

E Sonarqube, tutte le metriche per il mio progetto.Questo è un semplice MVC4 app, ma funziona alla grande!:

Se volete maggiori informazioni posso essere più specifico, ma penso che si dovrebbe almeno prendere in considerazione jenkins.Se la CC suites è meglio, almeno hai guardato buona alternativa prima che hai scelto.

Tutto questo programma di installazione utilizza MSBuild, anche costruire e distribuire le applicazioni.

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