6

Sono in procinto di creare un'applicazione per consentire l'automazione delle distribuzioni dell'applicazione, (https://github.com/twistedtwig/AutomdatedDeployments#readme).come distribuire un pacchetto zip msbuild localmente o remotamente senza richiedere il coinvolgimento di IIS

L'idea è che tutto è nel controllo del codice sorgente, i file dell'applicazione, la configurazione dell'applicazione e la configurazione di IIS. La mia applicazione consente la distribuzione automatica della soluzione, (aggiungendo un setp di post build al file sln/proj), dopo una compilazione sulla macchina di sviluppo. Consentirà al server CI di eseguire l'implementazione automatica sul proprio computer per il test e il Server CI spingendo le build riuscite ai server QA/Test/produzione. Uno dei problemi che ho con msdeploy è il requisito di IIS per essere configurato con il sito Web/l'applicazione prima della mano, (che la mia app sta cercando di aggirare).

Finora posso creare, aggiornare e rimuovere automaticamente pool di app, siti Web e applicazioni tramite i file di configurazione. Posso sincronizzare file e cartelle. L'ultimo passo è stato quello di usare lo switch/target: package in msbuild per creare strutture di file pulite per le implementazioni web. Per esempio vorrei correre un comando come:

msbuild.exe myMvcSite.csproj /target:clean /target:package /p:Configuration=Release /p:_PackageTempDir=C:\websites\mySite /p:PackageLocation=C:\dropLocation\mySite.zip 

Questo crea un file zip bella con il percorso del file interno di "C_C \ wbesites \ mySite" pronto (se ho capito bene) per essere sincronizzato alla produzione server.

Il mio problema è come distribuisco questo file zip. Voglio che sia indipendente da qualsiasi informazione IIS, cioè sto semplicemente spingendo i file/le cartelle in una posizione, (sul computer locale per gli sviluppatori, o remoto per i test, ecc.). La configurazione di IIS con pool di app e siti ecc. Sarebbe gestita separatamente. Alcuni dei comandi (e la loro uscita) che ho provato sono al di sotto:

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\Temp\deploy\installer\test\testPackage.zip" -dest:auto 
Info: Adding sitemanifest (sitemanifest). 
Error: The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v2.0'. This application requires 'v4.0'. 
Error count: 1. 

e

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\website\installer\testPackage.zip" -dest:contentpath=C:\temp\mytest 
Error: Source (sitemanifest) and destination (contentPath) are not compatible for the given operation. 
Error count: 1. 

Il primo comando che sto cercando di lasciarlo decomprimere i file con la struttura che ha. Sembra essere sconvolto per le cose del pool di app, (che non voglio che tocchi).

Il secondo sto cercando di aggirare il bit "auto" ma anche questo non è felice.

Sto lottando per trovare molte informazioni su questo processo.

L'unico modo in cui posso vedere come posso ottenere questo al momento è non usare msdeploy per questo, ma creare il mio compito per integrare la struttura del file e fare il file sincronizzando me stesso (non ideale).

+0

Quale errore stai ricevendo il secondo comando? –

+0

Errore: Source (sitemanifest) e destination (contentPath) non sono compatibili per l'operazione specificata. Conteggio errori: 1. (il secondo blocco di codice nella mia domanda). – Jon

risposta

1

Ho finito per scrivere su questo problema, piuttosto che essere in grado di risolverlo.

prendo il pacchetto zip:

  1. decomprimere in una posizione temporanea
  2. trovare il percorso finale che andrà a (normalmente da archive.xml)
  3. controllo per vedere se sono la fusione le cartelle o eseguendo un'installazione pulita (ad es., per prima cosa elimino la cartella di destinazione).
  4. copia/sposta file per terminare la posizione, (normalmente con msdeploy).

ho open source la mia soluzione a questo: https://github.com/twistedtwig/AutomatedDeployments