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:

Illustrates the above process.

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

  1. 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.

    In Visual Studio 2010, in the Team Explorer window, expand your team project node, right-click Builds, and then click New Build Definition.

  2. En la pestañaGeneral, asigne un nombre a la definición de compilación (por ejemplo, DeployToTest) y una descripción opcional.

  3. 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.

  4. 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).

    On the Build Defaults tab, in the Copy build output to the following drop folder box, type the Universal Naming Convention (UNC) path of your drop folder (for example, \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á.

  5. 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.

  6. 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.

    In the Build process parameters table, click in the Items to Build row, and then click the ellipsis button.

  7. En el cuadro de diálogo Elementos para compilar, haga clic en Aceptar.

  8. Vaya a la ubicación del archivo de solución y haga clic en Aceptar.

    Browse to the location of your solution file, and then click OK.

  9. En el cuadro de diálogo Elementos para compilar, haga clic en Aceptar.

  10. En la lista desplegable Elementos de tipo, seleccione Archivos del proyecto de MSBuild.

  11. 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.

    Browse to the location of the custom project file with which you control the deployment process, select the file, and then click OK.

  12. El cuadro de diálogo Elementos para compilar ahora debe mostrar dos elementos. Haga clic en OK.

    The Items to Build dialog box should now show two items. Click OK.

  13. En la pestaña Proceso, en la tabla Parámetros del proceso de compilación, expanda la sección Opciones avanzadas.

  14. 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
    

    In the MSBuild Arguments row, add any MSBuild command-line arguments that either of your items to build requires.

  15. En este ejemplo:

    1. 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.
    2. 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.
  16. En la pestaña Directiva de retención, configure cuántas compilaciones de cada tipo desea conservar según sea necesario.

  17. 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

  1. 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.

    In the Team Explorer window, right-click the build definition, and then click Queue New Build.

  2. En el cuadro de diálogo Compilación de cola, revise las propiedades de compilación y, a continuación, haga clic en Cola.

    In the Queue Build dialog box, review the build properties, and then click Queue.

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.

To review the progress and the outcome of a build, regardless of whether it was triggered manually or automatically, double-click the build definition in the Team Explorer window.

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.

If you double-click an individual build, you can view summary information and click through to detailed log files.

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.