Rilascio degli aggiornamenti ai servizi e ai siti Web di Windows dalla compilazione

0

Ho una soluzione che consiste in servizi Windows e siti Web. Quando si aggiornano le applicazioni al momento, vengono eseguite le seguenti operazioni

  1. Build of solution
  2. Le attività di post build copiano le DLL in una cartella specifica dell'applicazione
  3. Viene eseguito lo script di compilazione che raccoglie le DLL rilevanti per ciascuna applicazione (ciò avviene tramite un file di testo contenente un elenco delle DLL per applicazione, che deve essere modificato se viene aggiunta un'altra DLL al progetto). Questo viene poi inserito in un repository di rilascio e portato a Github
  4. Il repository di rilascio viene estratto sul server e viene eseguito uno script per sovrascrivere le DLL e gli ex di entrambi i servizi e i siti Web di Windows. Tutto questo viene fatto tramite XCopy insieme ad alcuni comandi di servizio di Windows per avviare / interrompere i servizi.

Mi stavo chiedendo come rendere questo un po 'più semplice? O se qualcuno in uno scenario simile lo fa in modo diverso?

    
posta Mark Walsh 12.01.2015 - 22:34
fonte

2 risposte

1

Sì e no.

Sì, perché non sarebbe difficile correggere i punti critici nei passaggi 2 o 3 senza troppi problemi - basta rifare la confezione per chiamare msbuild su singoli progetti con una directory di output desiderata in modo da non dover mantenere il file elenca almeno.

Sì, perché probabilmente potresti schivare l'intero pacchetto github installando magari gli artifiacts costruiti sulla macchina.

No, perché lo script di implementazione è probabilmente quello che ti serve per la tua app one-off e sta portando a termine il lavoro e potrebbe non esserci un modo migliore per arrivarci dato che la maggior parte dei nuovi giocattoli sono cloud- i servizi di fronte e di windows non implicano il cloud.

Potresti anche voler usare qualcosa come teamcity o jenkins per orchestrare, registrare e gestire il processo in altro modo.

    
risposta data 12.01.2015 - 22:48
fonte
0

Invece di cercare strumenti migliori, hai provato ad ottenere la maggior parte degli strumenti che già possiedi? Nel nostro ambiente, creiamo spesso script per tale processo, e (questo è il punto importante!) rendili "solidi" :

Build of solution

Puoi creare una build chiamando devenv.exe o msbuild sulla riga di comando, quindi è facile inserirla in uno script.

Build script is ran which gathers the DLLs relevant for each application

Bene, già automatico. Assicurati che lo script che hai menzionato qui restituisca un codice di errore nel caso in cui fallisca.

This is then stuffed in a release repository and pushed up to Github

Dovrebbe essere semplice da script, usando git dalla riga di comando.

Release repository is checked out on the server and a script is run to overwrite the DLLs and exes of both the Windows services and websites. All of this is done via XCopy along with some Windows service commands to Start/Stop services.

Così già sceneggiato - perfetto.

Per conferire a questo processo una certa robustezza, devi assicurarti che lo script contenga controllo completo degli errori dopo ogni passaggio e visualizzi quale passaggio non è riuscito in caso di errore. Ad esempio, chiama "devenv.exe", invia l'output a build.log e utilizza il comando find per verificare se contiene la riga "0 errori" (o qualcosa di simile). Dopo ogni passaggio, controlla sempre %ERRORLEVEL% e ferma se diventa diverso da 0.

    
risposta data 12.01.2015 - 23:40
fonte

Leggi altre domande sui tag