2011-12-18 12 views
9

Tengo MSDeploy/WebDeploy trabajando para actualizar mis aplicaciones web, esto resuelve aproximadamente el 90% de mis problemas de implementación de las cosas que tengo configuradas hasta ahora.Use MSDeploy para copiar un archivo ejecutable en un servidor y luego ejecute el mismo

Lo que me gustaría hacer, además, es copiar un ejecutable (pragmáticamente el contenido de una carpeta) en el servidor y luego ejecutar ese ejecutable (que realiza actualizaciones de esquema).

Veo que esto debería ser posible, pero estoy luchando por unir las piezas (esto es claramente un caso marginal).

Específicamente:

  • prefiero no copiar el archivo ejecutable (carpeta) en el directorio web.
  • debo tener en cuenta el resultado de ejecutar el archivo ejecutable (ser útil para devolver un estado de fallo, aunque si es significativo que esto son arrojados por las pruebas de implementación posterior)

Por más que nada, por lo tanto, qué comandos específicos en qué orden - si puedo encontrar un patrón que puedo hacer que funcione, pero estoy luchando para elaborar un patrón de


Notas:

no ocurrió m e que podría copiar la carpeta al directorio web, ejecutar el código y luego eliminar la carpeta nuevamente, pero no me siento cómodo con esto y, en cualquier caso, sería mejor tener el código disponible en la implementación de la publicación del servidor.

También debe notarse que estoy realmente realmente contento con la forma mantengo esquemas de bases de datos por lo que el hecho de que eso es lo que el ejecutable está haciendo es incidental a la pregunta

Respuesta

12

Web Implementar en realidad ofrece un buen número de opciones aquí. Las opciones que elijas dependen de la cantidad de elementos que quieras poner en un comando.

Para obtener una carpeta de archivos en el destino, puede usar el proveedor dirPath de Web Deploy para realizar la copia en la ubicación que desee. Para copiar un archivo individual, puede usar el proveedor filePath. Si su fuente de copia tiene muchos archivos pequeños, Web Deploy es en realidad más eficaz que RoboCopy en una red (consulte la publicación de mi blog Web Deploy vs. Robocopy).

Para ejecutar el archivo de comando que copió en el servidor de destino, puede usar el proveedor runCommand. (Esta es una pregunta importante, definitivamente la leería.)

Tenga en cuenta que en este punto estamos hablando de al menos dos comandos separados de Web Deploy, sin contar las operaciones "habituales" de Web Deploy como implementar un sitio web o servidor web.

Sin embargo, si su objetivo es lograr todo en una sola operación de Web Deploy, puede usar el proveedor manifest. Cree un archivo de manifiesto personalizado que especifique una serie de operaciones del proveedor de Web Deploy que se ejecutarán sucesivamente. Luego, en el comando Web Deploy, apunte el proveedor de manifiesto al archivo de manifiesto personalizado. Para obtener más información sobre este enfoque, consulte Creating and Synchronizing a Custom Manifest.

Si utiliza el proveedor de manifiesto, se podría especificar la proveedor de DirPath en el archivo de manifiesto para copiar el archivo o archivos a través de, a continuación, especifique la runcommand proveedor en una línea posterior a ejecutar realmente el ejecutable que usted ha copiado

Por último, un enfoque de un corto paso de usar un archivo de manifiesto es utilizar el PRESYNC y/o postSync línea de comandos para ejecutar un comando en el servidor de destino antes o después de la Web real Implementar la operación se lleva a cabo . Puede encontrar más información sobre PRESYNC y postSync en la página Web Deploy Operation Settings.

Todas las páginas referenciadas tienen ejemplos de sintaxis, por lo que debería ayudar.

+0

Gracias, eso es muy útil - DirPath + runcommand debe hacer el truco muy bien (estoy feliz de trabajar con tantos Web implementar medidas que sean necesarias y, de hecho, necesito el proceso a fallar antes de implementar el sitio si falla la ejecución de comandos) – Murph

Cuestiones relacionadas