Hola, bueno este post en realidad es meramente para documentar los pasos que tuve que seguir para montar un servidor de integración continua y en este caso la herramienta elegida fue CruiseControl .Net con el cual ya había trabajado pero no me había tocado levantar un servidor específicamente.
- Detección de errores mucho antes de llegar a ambiente productivo.
- Automatización del proceso para mantener siempre una versión estable del proyecto.
- Producto final robusto y constantemente revisado.
- Reducción de riesgos y mayor visibilidad del proyecto.
Básicamente al tener un servidor de integración continua nos aseguraremos que siempre exista una versión disponible del proyecto para revisión (normalmente QA) y que las subidas que realicen los desarrolladores no contengan errores o éstos serán delatados inmediatamente, con esto podemos sacar métricas de productividad por desarrollador y revisar los posibles problemas que se tengan antes de enviar el proyecto al ambiente productivo.
%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:system.webServer/security/requestfiltering -allowDoubleEscaping:true
Handler "CCNetHttpHandler" has a bad module “ManagedPipelineHandler” in its module list
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe –i
HTTP Error 500.19 - Internal Server Error with Error Code: 0x80070021The requested page cannot be accessed because the related configuration data for the page is invalid.
C:\Windows\System32\inetsrv\config\applicationHost.config
Por:<section name="handlers" overrideModeDefault="Deny" />
<section name="handlers" overrideModeDefault="Allow" />
C:\Program Files\CruiseControl.NET\server\ccnet.config
<project name="Test" webURL="http://localhost/ccnet"></project>
<tasks><devenv><solutionfile>D:\Proyectos\nHibernateTest\nHibernateTest.sln</solutionfile><configuration>Debug</configuration></devenv></tasks>
En la siguiente sección indicaremos que tipo de control de versiones usaremos, en nuestro caso será SubVersion y le indicaremos donde se encuentra el trunk o repositorio de la solución de visual studio además del directorio de trabajo:
<sourcecontrol type="svn"><trunkUrl>file://192.168.208.4/desarrollo/svn/Repositorio/nHibernateTest</trunkUrl><workingDirectory>D:\Proyectos\nHibernateTest\</workingDirectory></sourcecontrol>
En la siguiente sección indicaremos los triggers que generarán una compilación automática, en nuestro caso será un trigger por intervalos de tiempo (en segundos):
<triggers><intervalTrigger name="Subversion" seconds="60" /></triggers>
Con esta configuración es suficiente para probar nuestro servidor de ccnet, en mi caso le agregué un plugin para que le vaya poniendo etiquetas a las distintas versiones que se vayan generando:
<labeller type="svnRevisionLabeller"><major>7</major><minor>11</minor><url>file://192.168.208.4/desarrollo/svn/Repositorio/nHibernateTest</url></labeller>
Ojo que este plugin no viene con ccnet y lo tuve que bajar desde acá, luego copiar la dll en la carpeta del server de ccnet y reiniciar el server de ccnet.
En todo momento podemos ir revisando si nuestro archivo de configuración (ccnet.config) es válido o no con la herramienta Configuration Validator que viene con el ccnet:
Para probar que todo funcione bien es cosa de tomar cualquier archivo de nuestro proyecto en el visual studio, modificarlo y luego subirlo vía Svn, esto debería generar una compilación automática en nuestro servidor de ccnet y podremos ir monitoreando el resultado en la aplicación web de ccnet:
Desde la raíz de la aplicación web de ccnet podemos descargar el Cctray el cual es una aplicación de monitoreo local de los proyectos de ccnet:
Para agregar nuestro proyecto vamos a File – Settings y luego agregamos nuestro servidor y proyecto:
Para terminar podemos ir agregando nuevos plugins a la aplicación web de ccnet, para esto nos vamos a la opción Administer Dashboard desde la raíz de la aplicación web donde nos pedirá una clave, esta clave se define en el archivo que se encuentra en:
C:\Program Files\CruiseControl.NET\webdashboard\dashboard.config
En este archivo debemos modificar la siguiente línea donde pondremos la clave que usaremos como administrador:
<administrationPlugin password="ccnet" />
Una vez que logremos ingresar al administrador de la aplicación web de ccnet podremos administrar los plugins que aparecen en la lista de Packages, si queremos agregar algún plugin primero debemos darle permisos de escritura al usuario AspNet, en mi caso le tuve que dar permisos al usuario de IIS (IIS_IUSRS) al siguiente archivo:
C:\Program Files\CruiseControl.NET\webdashboard\packages\packages.xml
Bueno, eso es todo por ahora, como les comenté estos son los pasos que en mi caso particular tuve que seguir para montar un servidor de integración continua en un ambiente de pruebas, faltan muchas pruebas por hacer y muchas cosas que agregar pero esto es lo básico para partir.
Les recomiendo las siguientes lecturas para ir viendo más en detalle los parámetros a usar y cómo mejorar nuestro server de integración continua:
Eso sería por ahora, espero que no se me olvide nada, como siempre si tienen dudas o consultas las mandan por acá o a mi correo.
Saludos.
1 comentario:
Tengo ganas de hacer eso acá en la pega, pero me quedo en eso, en las ganas xD
Publicar un comentario