2010-07-26 10 views
5

Tengo varias aplicaciones web .net que utilizan el mismo framework cms-like. Cuando agregue nuevas funciones a este marco central, quiero que cada aplicación se actualice con esta característica. Así que, básicamente, tengo que hacer los siguientes pasos:.NET aplicación web actualización automática pull-style

  1. Put app_offline.htm en la raíz de la aplicación
  2. Copiar archivos que han cambiado desde el servidor de actualización
  3. scripts de actualización
  4. ejecutar SQL si es necesario
  5. Retire App_Offline .htm

He leído acerca de CruiseControl y otras herramientas de integración continua, tienen características muy similares a las que necesito. El problema es que usan la actualización push-style para que el servidor de integración construya el código fuente y luego copie los archivos a los servidores de producción. No puedo usar este enfoque porque mis clientes no pueden darme acceso a sus servidores de producción. Entonces, lo que necesito es tener un botón "Actualizar" en el administrador de IIS o en cualquier otro lugar para que el cliente pueda hacer clic en él y extraer datos del servidor de actualización. ¿Alguien sabe si hay una solución para lograr esto?

Gracias

Respuesta

0

El enfoque que tomé fue la creación de un guión que tira de la versión más reciente despliegue de git, se detiene IIS, copia la nueva versión terminado, se inicia IIS. Es muy crudo, pero si lo único en su repositorio git es la última versión desplegable, funcionará.

Incluso configuré el botón publicar en Visual Studio para copiarlo a mi repositorio de implementación de git local. Luego, simplemente presiono desde mi máquina de desarrollo y ejecuto mi script de implementación en mis servidores web objetivo, que extrae la última versión.

La parte de la secuencia de comandos de actualización SQL es interesante. Parece que necesitas algo parecido a las migraciones de db en Rails. Esto no es algo que he tenido que hacer frente todavía, pero voy a señalar aquí: http://www.infoq.com/news/2009/01/migrations_dotnet

0

Veo esto como subsistema de aplicación que realizar algunos pasos:

  1. rutina que comprueba la aplicación última versión
  2. perfom una descarga del archivo más reciente paquete de
  3. Desempaquetar y copiar los archivos nuevos
  4. llamada una línea de comandos SQL para informar a todos los statments sql
  5. al final, copiar todos archivos dll a la carpeta bin

Hay otra manera de ella, pero esto funciona sano y salvo como patrón.

Para actualizar la carpeta bin desde ASP.NET, su IIS necesita permitir el acceso a su carpeta bin. Así que usted puede considerar ajustar la seguridad de su entorno mediante la creación de un conjunto de permisos a medida como esta:

<IPermission 
class="FileIOPermission" 
version="1" 
Read="$AppDir$" 
Write="$AppDir$" 
Append="$AppDir$" 
PathDiscovery="$AppDir$" /> 

por lo que se puede copiar archivos de trabajar en esta carpeta especial.

Referencias

  1. http://msdn.microsoft.com/en-us/library/ff649312.aspx
  2. http://msdn.microsoft.com/en-us/library/ms998341.aspx

Obs .: Si encuentra problemas con la carpeta bin. Copiar nuevos archivos versionados a GAC ​​y administrar la referencia de ensamblado en la versión web.config. Suena bien también.

Cuestiones relacionadas