2011-12-06 8 views
6

tengo un sitio web de ASP.NET MVC 3 en C# con¿La forma más fácil de implementar todas las noches el sitio web ASP.NET MVC 3?

Proyecto
  • ASP.NET MVC 3 Proyecto Internet
  • de dominio (biblioteca de clases)
  • pruebas unitarias Proyecto
  • de base de datos SQL Server 2008 R2
  • control de código fuente de Mercurial

Cuál es la manera más fácil de hacer una noche AM 12:00 automatizado construir una ¿Y la implementación del sitio para que todos los días pudiera ir a dev.mycompany.com y ver una versión actualizada en vivo de mi versión Dev?

Estaba pensando en usar a Jenkins para hacer todo el edificio.

Respuesta

12

Ayudo a mantener un sistema como este - en Jenkins. Obviamente los detalles variarán en función de su estructura de proyecto, pero aquí es más o menos lo que hace nuestro trabajo Jenkins:

  • código de extracción (utilizamos Git pero hay un plugin Mercurial para Jenkins también)
  • ejecutar cualquier cambios en el esquema de SQL contra nuestras pruebas DB desde un script idempotente (usamos un script Ant, que es anterior a nuestro uso de Hudson/Jenkins)
  • Run msbuild (otro plugin Jenkins)
    • Crear archivo es nuestra .sln (o puede utilizar una web .csproj - los argumentos son ligeramente diferentes)
    • Argumentos de la línea de comando:
      • /p: Configuration = Dev/p: Platform = "Cualquier CPU"/p: DeployOnBuild = true/p: DeployTarget = Paquete /p:DeployIisAppPath="dev.mycompany.com/ "/ v: m
    • Esto crea un archivo .zip, un archivo .cmd, y algunos archivos .xml, que contienen todo lo necesario para implementar las actualizaciones a su sitio
  • dar comienzo a otros dos "MSDeploy "Trabajos de Jenkins, uno en cada servidor web .NET
    • Cada servidor web .NET también es un Jenkins Esclavo
    • Tenemos dos servidores en las pruebas, equilibrado a través de NLB
    • Cada "MSDeploy" copias de trabajo de los/.cmd/archivos .xml .zip desde el servidor de compilación en una ubicación temporal en el servidor web y luego ejecuta el. archivo cmd
    • El archivo .cmd ejecuta MSDeploy, que empuja todo lo que necesita a su servidor web dev

Tenemos un trabajo independiente que se ejecuta nuestras pruebas NUnit, pero sólo podría incorporar con la misma facilidad tus pruebas en tu trabajo principal. Una de las razones por las que construimos el .sln completo en lugar del web .csproj es para que podamos ejecutar nuestras pruebas unitarias desde el mismo código creado.

Si aún no lo hizo, deberá instalar ASP.NET MVC3, .NET 4 y msdeploy en el servidor de compilación, y creo que también necesitará la mayoría de los mismos archivos en sus servidores web .

Para la programación, puede elegir "generar periódicamente" o "sondear SCM" como su activador de compilación, y luego usar la sintaxis similar a cron (0 0 * * *) para ejecutar diariamente a la medianoche.

Cuestiones relacionadas