Crear una definición de compilación que admita la implementación
por Jason Lee
Si desea realizar cualquier tipo de compilación en Team Foundation Server (TFS) 2010, debe crear una definición de compilación en el proyecto de equipo. En este tema se describe cómo crear una nueva definición de compilación en TFS y cómo controlar la implementación web como parte del proceso de compilación en Team Build.
Este tema forma parte de una serie de tutoriales basados en los requisitos de implementación empresarial de una empresa ficticia denominada Fabrikam, Inc. Esta serie de tutoriales utiliza una solución de muestra (Contact Manager) para representar una aplicación web con un nivel de complejidad realista, que incluye una aplicación ASP.NET MVC 3, un servicio Windows Communication Foundation (WCF) y un proyecto de base de datos.
El método de implementación que constituye el núcleo de estos tutoriales se basa en el enfoque del archivo de proyecto dividido descrito en Comprensión del archivo del proyecto, en el que el proceso de compilación e implementación lo controlan dos archivos de proyecto: uno que contiene las instrucciones de compilación que se aplican a todos los entornos de destino y otro que contiene los ajustes de compilación e implementación específicos del entorno. En tiempo de compilación, el archivo de proyecto específico del entorno se combina en el archivo de proyecto independiente del entorno para formar un conjunto completo de instrucciones de compilación.
Información general sobre tareas
Una definición de compilación es el mecanismo que controla cómo y cuándo se producen las compilaciones para los proyectos de equipo en TFS. Cada definición de compilación especifica:
- Lo que desea compilar, como los archivos de solución de Visual Studio o los archivos de proyecto personalizados del motor de compilación de Microsoft (MSBuild).
- Los criterios que determinan cuándo debe realizarse una compilación, como desencadenadores manuales, integración continua (CI) o comprobaciones controladas.
- Ubicación a la que Team Build debe enviar salidas de compilación, incluidos artefactos de implementación como paquetes web y scripts de base de datos.
- Cantidad de tiempo que se debe conservar cada compilación.
- Varios otros parámetros del proceso de compilación.
Nota:
Para obtener más información sobre las definiciones de compilación, consulte Definir el proceso de compilación.
En este tema se muestra cómo crear una definición de compilación que use CI, de modo que se desencadene una compilación cuando un desarrollador compruebe el contenido nuevo. Si la compilación se realiza correctamente, el servicio de compilación ejecuta un archivo de proyecto personalizado para implementar la solución en un entorno de prueba.
Al desencadenar una compilación, estas acciones deben realizarse:
- En primer lugar, Team Build debe compilar la solución. Como parte de este proceso, Team Build invocará la canalización de publicación web (WPP) para generar paquetes de implementación web para cada uno de los proyectos de aplicación web de la solución. Team Build también ejecutará las pruebas unitarias asociadas a la solución.
- Si se produce un error en la compilación de la solución, Team Build no debe realizar ninguna otra acción. Los errores de prueba unitaria deben tratarse como un error de compilación.
- Si la compilación de la solución se realiza correctamente, Team Build debe ejecutar el archivo de proyecto personalizado que controla la implementación de la solución. Como parte de este proceso, Team Build invocará a Internet Information Services (IIS) Web Deployment Tool (Web Deploy) para instalar las aplicaciones web empaquetadas en los servidores web de destino e invocará la utilidad VSDBCMD.exe para ejecutar scripts de creación de bases de datos en los servidores de base de datos de destino.
Esto ilustra el proceso:
La solución de ejemplo Contact Manager incluye un archivo de proyecto MSBuild personalizado, Publish.proj, que puede ejecutar desde MSBuild o Team Build. Como se describe en Comprensión del proceso de compilación, este archivo de proyecto define la lógica que implementa sus paquetes web y bases de datos en un entorno de destino. El archivo incluye lógica que omite el proceso de compilación y empaquetado si se ejecuta en Team Build, dejando solo las tareas de implementación que se van a ejecutar. Esto se debe a que, al automatizar la implementación de esta manera, normalmente querrá asegurarse de que la solución se compila correctamente y supera las pruebas unitarias antes de que comience el proceso de implementación.
En la sección siguiente se explica cómo implementar este proceso mediante la creación de una nueva definición de compilación.
Nota:
Este procedimiento, en el que un único proceso automatizado compila, prueba e implementa una solución, es probable que sea más adecuado para la implementación para probar entornos. En entornos de ensayo y producción, es mucho más probable que quiera implementar contenido de una compilación anterior que ya ha comprobado y validado en un entorno de prueba. Este enfoque se describe en el tema siguiente, Implementación de una compilación específica.
¿Quién realiza este procedimiento?
Normalmente, un administrador de TFS realiza este procedimiento. En algunos casos, un responsable del equipo de desarrolladores puede asumir la responsabilidad de la colección de proyectos de equipo en TFS. Para crear una nueva definición de compilación, debe ser miembro del grupo Administradores de compilación de la colección de proyectos para la colección de proyectos del equipo que contiene la solución.
Creación de una definición de compilación para CI e implementación
En el procedimiento siguiente se describe cómo crear una definición de compilación que desencadena CI. Si la compilación se realiza correctamente, la solución se implementa mediante la lógica en un archivo de proyecto de MSBuild personalizado.
Para crear una definición de compilación para CI e implementación
En Visual Studio 2010, en la ventana Team Explorer, expanda el proyecto de equipo, haga clic con el botón derecho en Compilaciones y, después, haga clic en Nueva definición de compilación.
En la pestañaGeneral, asigne un nombre a la definición de compilación (por ejemplo, DeployToTest) y una descripción opcional.
En la pestaña Desencadenador, seleccione los criterios en los que desea desencadenar una nueva compilación. Por ejemplo, si desea compilar la solución e implementarla en el entorno de prueba cada vez que un desarrollador comprueba el código nuevo, seleccione Integración continua.
En la pestaña Valores predeterminados de compilación, en el cuadro Copiar salida de compilación en la siguiente carpeta desplegable, escriba la ruta de Convención de nomenclatura universal (UNC) de la carpeta desplegable (por ejemplo, \TFSBUILD\Drops).
Nota:
Esta ubicación de colocación almacena varias compilaciones, en función de la directiva de retención que configure. Cuando quiera publicar artefactos de implementación desde una compilación específica en un entorno de ensayo o producción, aquí es donde los encontrará.
En la pestaña Proceso, en la lista desplegable Archivo del proceso de compilación, deje DefaultTemplate.xaml seleccionado. Es una de las plantillas de proceso de compilación predeterminadas que se agregan a todos los nuevos proyectos de equipo.
En la tabla Parámetros del proceso de compilación, haga clic en la fila Elementos para compilar y después en el botón de puntos suspensivos.
En el cuadro de diálogo Elementos para compilar, haga clic en Aceptar.
Vaya a la ubicación del archivo de solución y haga clic en Aceptar.
En el cuadro de diálogo Elementos para compilar, haga clic en Aceptar.
En la lista desplegable Elementos de tipo, seleccione Archivos del proyecto de MSBuild.
Vaya a la ubicación del archivo del proyecto personalizado con el que controla el proceso de implementación, seleccione el archivo y, después, haga clic en Aceptar.
El cuadro de diálogo Elementos para compilar ahora debe mostrar dos elementos. Haga clic en OK.
En la pestaña Proceso, en la tabla Parámetros del proceso de compilación, expanda la sección Opciones avanzadas.
En la fila Argumentos de MSBuild, agregue los argumentos de la línea de comandos de MSBuild que requiera cualquiera de los elementos que se van a compilar. En el escenario de la solución Contact Manager, estos argumentos son necesarios:
/p:DeployOnBuild=true;DeployTarget=Package; TargetEnvPropsFile=EnvConfig\Env-Dev.proj
En este ejemplo:
- Los argumentos DeployOnBuild=true y DeployTarget=paquete son necesarios al compilar la solución Contact Manager. Esto indica a MSBuild que cree paquetes de implementación web después de compilar cada proyecto de aplicación web, como se describe en Compilar y empaquetar proyectos de aplicaciones web.
- El argumento TargetEnvPropsFile es necesario al compilar el archivo Publish.proj. Esta propiedad indica la ubicación del archivo de configuración específico del entorno, tal y como se describe en Comprensión del proceso de compilación.
En la pestaña Directiva de retención, configure cuántas compilaciones de cada tipo desea conservar según sea necesario.
Haga clic en Save(Guardar).
Poner en cola una compilación
En este momento, ha creado al menos una nueva definición de compilación. El proceso de compilación definido ahora se ejecutará según los desencadenadores especificados en la definición de compilación.
Si ha configurado la definición de compilación para usar CI, puede probar la definición de compilación de dos maneras:
- Compruebe algún contenido en el proyecto de equipo para desencadenar una compilación automática.
- Poner en cola una compilación manualmente.
Poner en cola una compilación manualmente
En la ventana Team Explorer, haga clic con el botón derecho en la definición de compilación y, después, haga clic en Poner nueva compilación en cola.
En el cuadro de diálogo Compilación de cola, revise las propiedades de compilación y, a continuación, haga clic en Cola.
Para revisar el progreso y el resultado de una compilación, independientemente de si se desencadenó manual o automáticamente, haga doble clic en la definición de compilación en la ventana de Team Explorer. Se abrirá una pestaña Explorador de compilación.
Desde aquí, puede solucionar problemas de compilaciones con errores. Si hace doble clic en una compilación individual, puede ver la información de resumen y hacer clic en los archivos de registro detallados.
Puede usar esta información para solucionar problemas de compilaciones con errores y solucionar los problemas antes de intentar otra compilación.
Nota:
Es probable que las compilaciones que ejecuten la lógica de implementación produzcan errores hasta que haya concedido al servidor de compilación los permisos necesarios en el entorno de destino. Para obtener más información, consulte Configuración de permisos para la implementación de la compilación en equipo.
Supervisión del proceso de compilación
TFS proporciona una amplia gama de funcionalidades que le ayudarán a supervisar el proceso de compilación. Por ejemplo, TFS puede enviarle un correo electrónico o mostrar alertas en el área de notificación de la barra de tareas cuando se ha completado una compilación. Para obtener más información, consulte Ejecutar y supervisar compilaciones.
Conclusión
En este tema se describe cómo crear una definición de compilación en TFS. La definición de compilación está configurada para CI, por lo que el proceso de compilación se ejecuta cada vez que un desarrollador comprueba el contenido en el proyecto de equipo. La definición de compilación ejecuta un archivo de proyecto de MSBuild personalizado para implementar paquetes web y scripts de base de datos en un entorno de servidor de destino.
Para que una implementación automatizada se realice correctamente como parte de un proceso de compilación, deberá conceder los permisos adecuados a la cuenta de servicio de compilación en los servidores web de destino y el servidor de base de datos de destino. El último tema de este tutorial, Configuración de permisos para la implementación de Team Build, describe cómo identificar y configurar los permisos necesarios para la implementación automatizada desde un servidor de Team Build.
Lecturas adicionales
Para más información sobre cómo crear definiciones de compilación, vea Creación una definición de compilación básica y Definición del proceso de compilación. Para obtener más instrucciones sobre cómo poner en cola las compilaciones, vea Poner una compilación en cola.