Jenkins per automatizzare la distribuzione di applicazioni ASP.NET

13

Esiste la possibilità di automatizzare / semi-automatizzare le distribuzioni di applicazioni Web ASP.NET utilizzando Jenkins. Può essere in ambienti controllati o incontrollati, per gli utenti non controllati è necessario inserire userid e password. Sto cercando modi per copiare i file da destinazione a destinazione ed eseguire script sql nello scenario di Web farm.

Modifica Attualmente stiamo usando i file bat per xcopy / configure pool app / sql cmd, ecc. Per distribuire l'applicazione. Ma affinché funzioni, il team di supporto alla produzione deve scaricare il codice sorgente, creare il progetto ed eseguire i file bat per distribuire l'applicazione.

Ora, vogliamo automatizzare la distribuzione senza che l'utente scarichi il codice sorgente e l'utente deve solo visitare un url e riempire i parametri userid e password e selezionare il tag svn e dovrebbe essere distribuito. Ma Jenkins è in esecuzione con login anonimo, quindi il file bat esistente non funzionerà poiché non ha le autorizzazioni per eseguire lo script.

Quindi vorrei sapere se esistono alternative per questo tipo di situazione. Sarà utile se il contesto utente viene rappresentato utilizzando l'ID utente e la password immessi, consentendo l'esecuzione del file batch esistente senza ulteriori modifiche. Se non è possibile, vorremmo esplorare anche altre idee, ma non abbiamo la flessibilità per scegliere uno strumento automatico come puppet, ecc., Dovremmo restare con questi file batch.

    
posta Sunny 02.05.2013 - 22:36
fonte

2 risposte

11

Condividerò quello che stavamo usando e dove stiamo andando, forse ti aiuterà a darti un'idea migliore.

  • Al momento usiamo insieme Jenkins e Github - una volta che qualcosa è stato fuso in un master, Github dice a Jenkins e prende il via da una build.
  • Usiamo uno script Nant su Jenkins per costruire il progetto, eseguire test unitari e, se tutto sembra a posto, prende il via un altro progetto Jenkins. Lo script Nant sputa anche una directory con codice completamente compilato / CSS / JS minimizzato, ecc.
  • Il progetto secondario di Jenkins prende l'output dalla build e lo rimanda a Github, su un repository separato.
  • Un file .BAT viene eseguito ogni 5 minuti sul server Web di staging e in sostanza controlla gli aggiornamenti di quel repository. Se viene trovato un aggiornamento, scarichiamo la build più recente, eseguiamo il backup dei file di staging, quindi distribuiamo la versione più recente nella cartella di gestione temporanea.
  • Per andare a vivere, abbiamo un file .BAT che gestisce il backup dei file live e copia i file del repository sui file live. Viene eseguito manualmente. Non gestisce gli aggiornamenti SQL (noi li facciamo a mano).

Ora, ovviamente questo non è totalmente ideale ma funziona per noi. Vogliamo espandere questo in futuro per:

  • Usa Web Deploy per inviare i file da Jenkins direttamente a IIS e fare altri comandi è necessario eseguire.
  • Utilizza le migrazioni automatiche (una funzionalità di Entity Framework) per gestire tutti gli aggiornamenti SQL, come parte del go live.
risposta data 08.05.2013 - 21:36
fonte
4

Sto già utilizzando Jenkins per le app .Net e TFS.

  1. Aggiungi la configurazione richiesta nel tuo progetto e trasformazione & check-in il codice.
  2. Ottieni l'ultimo da TFS (usa il plug-in TFS)
  3. Costruisci il progetto (usa il plug-in MSBuild). puoi pubblicare il codice da Msbuild usando gli argomenti della riga di comando.
  4. Sincronizza il codice da posizione di pubblicazione a destinazione utilizzando il comando msdeploy.exe (situato in "C: \ Programmi (x86) \ IIS \ Microsoft Web Deploy V2 \ msdeploy.exe")
  5. Puoi inviare e-mail e fare il backup anche tramite Jenkins.

Puoi anche usare MSTest.exe per eseguire il test dell'unità e mostrarlo alla console jenkin o pubblicare anche il risultato del test.

    
risposta data 10.11.2014 - 22:33
fonte

Leggi altre domande sui tag