Domanda

Attualmente distribuiamo applicazioni Web creando un database ed eseguendo script SQL tramite l'analizzatore di query.Quindi copiamo l'output da "pubblica sito Web" e configuriamo quel sito Web in IIS.

Abbiamo visto il websetup in Visual Studio, ma quella parte sembra essere scarsamente documentata.Ad esempio, non ci è chiaro come chiedere all'utente IP e password del server SQL.Tendiamo anche a distribuire i siti Web in questo modo in cartelle come http://example.com/project, invece che solo http://esempio.com.

Poi ci sono problemi con AJAX.Net che non viene installato o alcune patch non vengono applicate.

Finora abbiamo accesso fisico ai server.Molto presto però spediremo i CDROM.Qual è il compromesso pratico tra intervento manuale e automazione?

È stato utile?

Soluzione

Evita la distribuzione di Visual Studio e automatizza il più possibile.Progetti di distribuzione Web e NAnt possono essere tuoi amici!

In breve, la nostra configurazione di distribuzione:

  1. Utilizziamo RedGate SQL per creare script delle differenze tra il database di sviluppo e quello live.

  2. Un file di build NAnt che chiama MSBUILD per creare il progetto di distribuzione Web (.wdproj), comprime l'app Web compilata risultante (insieme allo script di modifica SQL) e quindi carica il file zip sul server.

  3. Sul lato server, c'è un altro file di build NAnt che porta l'applicazione offline, esegue il backup del database, esegue il backup del sito Web.esegue lo script di modifica SQL, decomprime la nuova versione e porta l'app online.

Il passaggio 3 viene solitamente eseguito "manualmente" (un doppio clic), ma a volte è programmato per tarda notte.Potresti fare esattamente la stessa cosa da un CDROM o persino scrivere una graziosa app Windows Forms come wrapper.

Sono molto felice di fornire dettagli sullo script NAnt se sei interessato.

Altri suggerimenti

Hai provato a utilizzare Distribuzione Web progetto?C'è supporto per VS 2008 anche adesso..

Distribuisco principalmente app ASP.NET su server Linux.Ecco il mio flusso di lavoro standard:

  • Utilizzo un repository di codice sorgente (come Subversion)
  • Sul server ho uno script bash che esegue le seguenti operazioni:
    • Controlla l'ultimo codice
    • Fa una build (crea le DLL)
    • Filtra i file fino all'essenziale (rimuove ad esempio i file di codice)
    • Esegue il backup del database
    • Distribuisce i file sul server Web in una directory denominata con la data corrente
    • Aggiorna il database se nella distribuzione è incluso un nuovo schema
    • Rende la nuova installazione quella predefinita in modo che venga pubblicata con l'hit successivo

Il checkout viene effettuato con la versione da riga di comando di Subversion e la compilazione viene eseguita con xbuild (msbuild work-alike dal progetto Mono).La maggior parte della magia viene eseguita in ReleaseIt.

Sul mio server di sviluppo ho essenzialmente un'integrazione continua, ma dal lato della produzione in realtà accedo tramite SSH al server e avvio manualmente la distribuzione eseguendo lo script.Il mio script è astutamente chiamato "deploy", quindi è quello che digito al prompt di bash.Sono molto creativo.Non.

In produzione, devo digitare "deploy" due volte:una volta per eseguire il check-out, creare e distribuire in una directory datata e una volta per rendere quella directory l'istanza predefinita.Poiché le directory sono datate, posso ripristinare qualsiasi distribuzione precedente semplicemente digitando "deploy" dalla directory pertinente.

La distribuzione iniziale richiede un paio di minuti, mentre il ripristino a una versione precedente richiede alcuni secondi.

È stata una buona soluzione per me e si basa solo sulle tre utilità della riga di comando (svn, xbuild e releaseit), sul client DB, SSH e Bash.

Ho davvero bisogno di aggiornare la copia di ReleaseIt su CodePlex prima o poi:

http://releaseit.codeplex.com/

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