Sto cercando diverse tecniche / strumenti che usi per distribuire un progetto di applicazione web ASP.NET ( NON un sito web ASP.NET) in produzione?
Sono particolarmente interessato al flusso di lavoro che si verifica tra il momento in cui il server Continuous Integration Build rilascia i file binari in una posizione e il momento in cui la prima richiesta dell'utente raggiunge questi binari.
Stai usando alcuni strumenti specifici o solo XCOPY? Come viene confezionata l'applicazione (ZIP, MSI, ...)?
Quando un'applicazione viene distribuita per la prima volta, come si configurano il pool di app e la directory virtuale (le si crea manualmente o con qualche strumento)?
Quando una risorsa statica cambia (CSS, JS o file immagine) ridistribuisci l'intera applicazione o solo la risorsa modificata? Che ne dici di quando cambia una pagina assembly / ASPX?
Tieni traccia di tutte le versioni distribuite per una determinata applicazione e, nel caso in cui qualcosa vada storto, disponi di procedure per ripristinare l'applicazione a un precedente stato di lavoro noto?
Sentiti libero di completare l'elenco precedente.
Ed ecco cosa usiamo per distribuire le nostre applicazioni ASP.NET:
- Aggiungiamo un progetto di distribuzione Web alla soluzione e lo configuriamo per creare l'applicazione Web ASP.NET
- Aggiungiamo un progetto di installazione ( NON un progetto di installazione Web) alla soluzione e lo impostiamo per prendere l'output del progetto di distribuzione Web
- Aggiungiamo un'azione di installazione personalizzata e nell'evento OnInstall eseguiamo un assembly .NET di build personalizzato che crea un pool di app e una directory virtuale in IIS utilizzando System.DirectoryServices.DirectoryEntry (questa attività viene eseguita solo la prima volta che un'applicazione viene distribuita) . Supportiamo più siti Web in IIS, autenticazione per directory virtuali e impostazione di identità per pool di app.
- Aggiungiamo un'attività personalizzata in TFS per creare il progetto di installazione (TFS non supporta i progetti di installazione, quindi abbiamo dovuto usare devenv.exe per creare l'MSI)
- L'MSI è installato sul server live (se c'è una versione precedente dell'MSI viene prima disinstallato)