Descripción de Team Foundation Build System

Puede usar Team Foundation Build para compilar, comprobar e implementar software en un sistema automatizado y distribuido. Este software se ha diseñado para admitir tanto pequeños trabajos de software iniciales, como grandes iniciativas de desarrollo de software. El sistema se ha diseñado para ayudarle a escalar el sistema de compilación a medida que crecen su equipo y su base de código.

En este tema

  • Equipos de compilación

    • El Servicio de Team Foundation Build

    • Uso de las máquinas virtuales como equipos de compilación

  • El controlador de compilación

  • El agente de compilación

  • Ejemplos de topología de Build System

  • Pasos siguientes

Equipos de generación

Para usar Team Foundation Build, debe contar al menos con un equipo de compilación. Para proyectos de software medianos o grandes, es probable que necesite varios equipos de compilación. Más adelante en este tema, se proporcionan ejemplos de varias configuraciones del sistema de compilación.

Una máquina de compilación es un equipo en el que se ha instalado y configurado Servicio de Team Foundation Build. La máquina puede ser un equipo físico (por ejemplo, un equipo ubicado en su escritorio o una estación de trabajo en un laboratorio). También puede aprovecharse la flexibilidad de una máquina virtual para que esta actúe como máquina de compilación.

Nota

Puede configurar una máquina de compilación ad hoc en cualquier equipo que esté disponible. Por ejemplo, un desarrollador de software individual que cuente con un equipo adicional disponible podría prepararlo como un equipo de compilación para usar las capacidades de Servicio de Team Foundation Build.

Aunque configure, modifique y administre directamente un equipo de compilación en el equipo donde se ejecuta Servicio de Team Foundation Build, los datos de configuración en sí se almacenan en la colección de proyectos de equipo.

Ell Servicio de Team Foundation Build

Para configurar un equipo de compilación, hay que instalar, configurar y ejecutar Servicio de Team Foundation Build.

Servicio de Team Foundation Build es un servicio de Windows que se menciona en ubicaciones diferentes dentro del sistema operativo. El lugar donde se menciona depende de si Servicio de Team Foundation Build se ejecuta como un servicio de Windows o un servicio interactivo. (Para obtener más información sobre cómo configurar esta opción, vea Configurar una máquina de compilación).

Cuando el Servicio de Team Foundation Build se ejecuta como un servicio de Windows:

  • En el nodo Servicios, Servicio de Team Foundation Build se muestra como Host del Servicio de Visual Studio Team Foundation Build. Puede ver el nodo Servicios en uno de los lugares siguientes:

    • En un sistema operativo de servidor (por ejemplo, Windows Server 2008) del Administrador de servidores

    • En un sistema operativo cliente (por ejemplo, Windows Vista) en Administración de equipos

  • En el Administrador de tareas, Servicio de Team Foundation Build se muestra como Host del Servicio de Team Foundation Build Visual Studio en la pestaña Servicios.

Nota

Se puede detener o reiniciar el servicio de compilación desde los lugares anteriormente mencionados. Deteniendo o reiniciando el servicio, se para o reinicia eficazmente el equipo de compilación. Sin embargo, la manera más cómoda de administrar un equipo de compilación es usando la Consola de administración de Team Foundation. Para obtener más información, vea Administrar el sistema de compilación.

Cuando el Servicio de Team Foundation Build se ejecuta como un servicio interactivo:

  • En el Administrador de tareas, Servicio de Team Foundation Build se muestra como TFSBuildServiceHost en la pestaña Aplicaciones.

Uso de las máquinas virtuales como equipos de compilación

Se puede implementar Servicio de Team Foundation Build en una máquina virtual (por ejemplo, una máquina virtual de Hyper-V que se ejecuta en un equipo físico con Windows Server 2008). Si adopta esta estrategia, realizará las siguientes tareas con facilidad:

  • Volver a compilar el sistema desde cualquier estado y cualquier punto a tiempo. Por ejemplo, si se daña el sistema, puede revertir rápidamente a una captura de un entorno limpio y volver a compilar el sistema.

  • Tome una captura de una máquina virtual y, a continuación, expórtela y almacénela, o compártala con otras personas de su equipo.

El principal inconveniente de usar una máquina virtual es que funciona más despacio que un equipo físico. Si la cantidad de trabajo que requieren sus compilaciones es pequeña o si ejecuta las compilaciones con poca frecuencia (por ejemplo, de noche), una máquina virtual podría resultar suficiente como equipo de compilación en su sistema.

Puede llevar a cabo las tareas siguientes para mejorar el rendimiento de Servicio de Team Foundation Build cuando se ejecuta en una máquina virtual:

  • Ejecute sus máquinas virtuales en un equipo físico que tenga un procesador de varios núcleos. Por ejemplo, si su equipo físico tiene un procesador de núcleo cuádruple, podría ejecutar al mismo tiempo cuatro máquinas virtuales, que actuarían bastante bien como equipos de compilación para muchas situaciones.

  • Dedique un disco duro físico a cada máquina virtual y móntelos en cada una de ellas.

El controlador de compilación

Cada controlador de compilación se dedica a una colección de proyectos de equipo única. El controlador acepta las solicitudes de compilación de cualquier proyecto de equipo de una colección de proyecto de equipo especificada.

Cada controlador de compilación agrupa y administra los servicios de uno o más agentes de compilación. Distribuye el trabajo que consume muchos recursos de procesador (como compilar el código o hacer las pruebas) a los agentes de compilación dentro de su grupo.

El controlador de compilación procesa el flujo de trabajo y normalmente realiza el trabajo más ligero, como, por ejemplo, determinar el nombre de la compilación, crear la etiqueta en el control de versiones, registrar las notas y notificar el estado de la compilación.

Dado que un controlador de compilación no suele requerir mucho tiempo del procesador, una máquina virtual es a menudo suficiente para actuar como plataforma de un controlador de compilación. Sin embargo, un controlador de compilación puede exigir una cantidad de memoria significativa en algunas situaciones. Por consiguiente, debe asegurarse de que proporciona memoria suficiente al equipo físico o máquina virtual en el que configura sus controladores de compilación.

El agente de compilación

Cada agente de compilación se dedica a un controlador de compilación único y lo controla. El agente de compilación realiza el trabajo que consume muchos recursos de procesador y de disco. Este trabajo incluye obtener los archivos y protegerlos en el control de versiones, aprovisionar el área de trabajo, compilar el código y ejecutar las pruebas.

Al ensamblar un sistema de compilación, se puede empezar con unos pocos agentes. A continuación, puede escalar el sistema de compilación agregando más agentes de compilación cuando agregue miembros del equipo, cuando crezca su base de código y a medida que aumente el trabajo que debe realizar el sistema de compilación.

Si configura sus agentes de forma que tengan capacidades especializadas, debería asignar etiquetas a esos agentes. Esta estrategia le permitirá crear definiciones de compilación que después podrán usar estos agentes especializados. Por ejemplo, podría aplicar la etiqueta BVT a un grupo de agentes diseñados para ejecutar sus pruebas de BVT. A continuación, podría definir una compilación nocturna para usar sólo estos agentes de compilación.

Dado que los agentes de compilación hacen la mayor parte del trabajo que requiere un uso intensivo del procesador, debe asegurarse de que el equipo de compilación tenga un hardware con la potencia suficiente para que el agente de compilación pueda hacer el trabajo necesario en un período de tiempo aceptable.

Ejemplos de topología de Build System

Servicio de Team Foundation Build se ha diseñado de manera que se pueda iniciar con un sistema de compilación más pequeño y menos complejo. A medida que su base de código se expande y su equipo crece, es sencillo expandir incrementalmente el sistema agregando equipos de compilación adicionales al sistema que ya tiene.

Sistema de un único equipo (se comparte con la capa de aplicación)

La configuración siguiente puede admitir un equipo muy pequeño, sobre todo uno que ejecute las compilaciones con poca frecuencia y sólo durante horas en las que no se trabaja. (Por ejemplo, solo se ejecuta una única compilación nocturna).

Un sistema de una sola máquina en la capa de aplicación

En la mayoría de los casos, una topología con un único equipo de compilación no es suficiente debido a las razones siguientes:

  • El agente de compilación presenta grandes exigencias al procesador, lo que podría disminuir significativamente el rendimiento de la capa de aplicación.

  • El controlador de compilación puede ejercer presión en la memoria del sistema, sobre todo si el controlador administra muchos agentes de compilación activos al mismo tiempo.

  • Al instalar Servicio de Team Foundation Build, se aumenta la superficie de ataque de un equipo de compilación. Por ejemplo, un usuario malintencionado podría construir una definición de compilación para ejecutar código arbitrario con el fin de tomar el control del servidor y robar datos.

Sistema de un único equipo (independiente)

La configuración siguiente es un buen punto de partida para un equipo pequeño.

Un sistema de una sola máquina (independiente)

Dado que los agentes de compilación realizan el trabajo que consume muchos recursos de procesador en un equipo independiente, el rendimiento de la capa de aplicación no se ve afectado cuando se ejecutan las compilaciones.

También podría ejecutar el controlador de compilación en el equipo de compilación dedicado. Sin embargo, la configuración de la ilustración tiene la ventaja de realizar los cambios del sistema de compilación con menos interrupciones, como, por ejemplo, cuando se repara o reemplaza el equipo de compilación.

La presencia del controlador de compilación en el mismo equipo que la capa de aplicación no suele representar un problema desde el punto de vista del procesador. Sin embargo, quizá sea conveniente ampliar a una topología más escalable por las razones siguientes:

  • El controlador de compilación puede ejercer presión en la memoria del sistema, sobre todo si el controlador administra muchos agentes de compilación activos al mismo tiempo.

  • Al instalar Servicio de Team Foundation Build, se aumenta la superficie de ataque de un equipo de compilación. Por ejemplo, un usuario malintencionado podría construir una definición de compilación para ejecutar código arbitrario con el fin de tomar el control del servidor y robar datos.

Sistema de varios equipos

Los equipos medianos y grandes generalmente necesitarán varios equipos de compilación para respaldar sus esfuerzos. En el ejemplo siguiente, se implementan dos equipos de compilación.

Un sistema de varias máquinas

Mediante el uso de varios equipos de compilación, puede dedicar cada equipo a un propósito diferente, tal y como se describe en el ejemplo siguiente:

  • Un equipo de compilación podría dedicarse a los agentes de compilación que procesan las compilaciones de integración continuas. El equipo necesita que estos tipos de compilaciones (las compilaciones de protección especialmente aceptadas) se ejecuten rápidamente para que su trabajo no se detenga por esperar una compilación. Los valores de parámetros del proceso de compilación se deben usar para asegurarse de que las compilaciones se ejecutan rápidamente. Esta configuración podría incluir no limpiar el área de trabajo, ejecutar solo las pruebas de mayor prioridad y establecer un valor bajo en Tiempo de ejecución máximo.

  • Otro equipo de compilación podría dedicarse a las compilaciones programadas y ad hoc que requieran mucho tiempo para procesarse. Por ejemplo, podría configurar las definiciones de compilación destinadas a los agentes de compilación de este equipo de manera que las definiciones limpien el área de trabajo, realicen todas las pruebas y ejecuten el análisis de código.

Sistema de varios equipos con varios controladores

En el ejemplo de topología siguiente pueden admitirse los esfuerzos de software de nivel empresarial.

Sistema de varios máquinas con varios controladores

Cada colección de proyectos de equipo debe tener su propio controlador de compilación, como se muestra en la ilustración. Observe cómo esta topología aísla los equipos de compilación. Los miembros del equipo que trabajan en la Colección de proyectos de equipo A solo pueden utilizar los agentes de compilación que el controlador de compilación A controla.

Pasos siguientes

Ahora que entiende cómo funciona el sistema Team Foundation Build, puede continuar con los pasos siguientes: