6

Estoy en proceso de crear una aplicación que permita la automatización de las implementaciones de aplicaciones (https://github.com/twistedtwig/AutomdatedDeployments#readme).cómo implementar un paquete zip de msbuild de forma local o remota sin requerir la participación de IIS

La idea es que todo está en control de fuente, archivos de aplicación, configuración de la aplicación, así como la configuración de IIS. Mi aplicación permite que la solución se implemente automáticamente, (agregando un buildp posterior al archivo sln/proj), luego de una compilación en la máquina dev. Permitirá que el servidor de CI se implemente automáticamente en su máquina para realizar pruebas, así como el servidor de CI que impulsa las compilaciones exitosas a los servidores de QA/Prueba/producción. Uno de los problemas que tengo con msdeploy es el requisito de que IIS se configure con el sitio web/aplicación de antemano, (que mi aplicación está tratando de evitar).

Hasta ahora puedo crear, actualizar y eliminar, grupos de aplicaciones, sitios web y aplicaciones a través de archivos de configuración de forma automática. Puedo sincronizar archivos y carpetas bien. El último paso fue utilizar el modificador/target: package en msbuild para crear estructuras de archivos limpias para implementaciones web. Por ejemplo, me gustaría ejecutar un comando como:

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

Esto crea un archivo zip agradable con la ruta del archivo interno de "C_C \ wbesites \ miSitio" listo (a mi entender) para ser sincronizado con la producción servidor.

Mi problema es cómo implementar este archivo comprimido. Quiero que sea independiente de cualquier información de IIS, es decir, simplemente estoy empujando los archivos/carpetas hacia una ubicación (ya sea en la máquina local para desarrolladores o remota para realizar pruebas, etc.). La configuración de IIS con grupos de aplicaciones y sitios, etc., se trataría por separado. Algunos de los comandos (y su producción) que he probado son a continuación:

"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. 

y

"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. 

El primer comando que estoy tratando de dejarlo descomprimir los archivos con la estructura que tiene. Sin embargo, parece estar molesto por las cosas del grupo de aplicaciones (que no quiero que toque).

El segundo que estoy tratando de evitar el bit "automático" pero esto tampoco es feliz.

Tengo dificultades para encontrar mucha información sobre este proceso.

La única forma en que puedo ver cómo puedo lograr esto en este momento es no usar msdeploy para ello, sino crear mi propia tarea para integrar la estructura de archivos y hacer el archivo sincronizando mi auto (no ideal).

+0

¿Qué error está recibiendo en el segundo comando? –

+0

Error: Source (sitemanifest) y destination (contentPath) no son compatibles para la operación dada. Recuento de errores: 1. (el segundo bloque de código en mi pregunta). – Jon

Respuesta

1

Terminé la codificación sobre este tema, en lugar de ser capaz de resolverlo.

que tomar el paquete postal:

  1. descomprimir en una ubicación temporal
  2. encontrar el camino final que se va a (normalmente de archive.xml)
  3. comprobación para ver si estoy fusionando las carpetas o hacer una instalación limpia, (es decir, ¿elimino primero la carpeta de destino).
  4. copiar/insertar archivos en la ubicación final (normalmente con msdeploy).

de código abierto que mi solución a esto: https://github.com/twistedtwig/AutomatedDeployments

Cuestiones relacionadas