Elegir un agente de compilación hospedado por Microsoft o autohospedado

Completado

En esta unidad, conocerá algunos de los factores que se deben tener en cuenta a la hora de elegir un agente de compilación. Descubrirá algunas de las ventajas y limitaciones de usar un agente hospedado por Microsoft, y lo que implica la configuración de un agente de compilación privado propio.

¿Qué son los agentes de compilación y los grupos de agentes?

Un agente de compilación es un sistema que realiza tareas de compilación. Imagínelo como un servidor dedicado que ejecuta el proceso de compilación.

Imagine que tiene un proyecto de Azure Pipelines que recibe solicitudes de compilación muchas veces al día, o que tiene varios proyectos que pueden usar el mismo tipo de agente de compilación. Puede organizar los agentes de compilación en grupos de agentes para ayudar a garantizar que haya un servidor listo para procesar cada solicitud de compilación.

Cuando se desencadena una compilación, Azure Pipelines selecciona un agente de compilación disponible del grupo. Si todos los agentes están ocupados, el proceso espera a que uno esté disponible.

Cuando se usa un agente hospedado por Microsoft, se especifica la imagen de máquina virtual del grupo que se va a usar. Este es un ejemplo de la configuración de compilación existente que usa un agente de compilación de Ubuntu 20.04:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Cuando se usa un agente hospedado por Microsoft, se emplea vmImage para especificar qué tipo de sistema se necesita. Microsoft proporciona muchos tipos de imágenes de máquina virtual, incluidas las que se ejecutan en Windows, macOS y distintas versiones de Linux.

La sección demands especifica qué software o funcionalidades se necesitan en la máquina de compilación.

Cuando se usa un agente de compilación del grupo propio, también conocido como grupo privado, se especifica el nombre del grupo. Este es un ejemplo:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Si no necesita una sección demands, puede acortar la sintaxis así:

pool: 'MyAgentPool'

Más adelante en este módulo se crea un agente de compilación y se agrega a un grupo.

¿Qué tipo de agentes se pueden usar?

Al elegir un agente de compilación, hay dos factores que se deben tener en cuenta:

  • El sistema operativo en el que se quiere realizar la compilación
  • Si se puede usar un agente hospedado por Microsoft o hay que proporcionar un agente propio

Azure Pipelines es compatible con estos sistemas operativos:

El agente de compilación que elijamos dependerá principalmente de las herramientas que se usen para compilar el código. Por ejemplo, si usa Xcode para compilar las aplicaciones, puede elegir un agente de macOS. Si necesita Visual Studio, es probable que elija un agente de Windows.

La configuración de compilación existente usa un agente hospedado por Microsoft. Los agentes hospedados se ejecutan en infraestructura que Microsoft proporciona.

Un agente privado usa la infraestructura que proporcionemos. El agente puede ser un sistema que se ejecute en la nube o en el centro de datos. Cualquiera de los dos es válido, siempre y cuando el agente cumpla los requisitos y pueda conectarse a Azure Pipelines. En este módulo, usará una máquina virtual que se ejecuta en Azure, que se le proporciona.

¿Cuándo debo usar mi propio agente de compilación?

En muchas tareas de compilación, un agente hospedado por Microsoft hará todo lo que se necesita. Es la manera más fácil de empezar a trabajar.

Microsoft se encarga de todas las actualizaciones de seguridad y de sistema operativo. Lo único que debemos hacer es definir la configuración de compilación que queremos ejecutar.

Los agentes hospedados también contienen software para compilar muchos tipos comunes de aplicaciones. Puede agregar cualquier otro software que necesite durante el proceso de compilación.

Los agentes hospedados por Microsoft tienen algunas limitaciones, a saber:

  • Duración de la compilación: un trabajo de compilación se puede ejecutar durante seis horas como máximo.
  • Espacio en disco: los agentes hospedados proporcionan una cantidad fija de espacio de almacenamiento para los orígenes y las salidas de compilación, pero puede que no sea suficiente.
  • CPU, memoria y red: los agentes hospedados se ejecutan en máquinas virtuales de uso general de Microsoft Azure. Standard_DS2_v2 describe las características de CPU, memoria y red que se pueden esperar.
  • Interactividad: no se puede iniciar sesión en un agente hospedado.
  • Recursos compartidos de archivos: no se pueden poner artefactos de compilación en recursos compartidos de archivos de convención de nomenclatura universal (UNC).

Aunque los agentes hospedados son relativamente fáciles de configurar, hay algunas ventajas derivadas del uso de agentes de compilación propios, aparte de las limitaciones que se acaban de describir.

Por ejemplo, al usar agentes hospedados, estamos compartiendo infraestructura con otros usuarios de Azure DevOps. Aunque normalmente la compilación solo tarda unos segundos en iniciarse, puede tardar más según la carga del sistema de Microsoft.

Además, al usar agentes hospedados, se obtiene un sistema limpio con cada compilación. Cuando se usa un agente de compilación propio, se puede decidir si realizar una compilación limpia cada vez o una compilación incremental. Con esta última, nos basamos en las herramientas de compilación existentes y en el código compilado. Una compilación incremental puede tardar menos tiempo en completarse porque el sistema ya tiene muchas de las herramientas de compilación y los componentes dependientes instalados.

Como contrapartida, dado que la infraestructura de compilación es propia, es responsabilidad del usuario asegurarse de que los agentes de compilación contengan las últimas revisiones de software y seguridad.

¿Cómo se configura un agente de compilación privado?

Un agente de compilación privado contiene el software necesario para compilar las aplicaciones. También contiene software del agente que permite que el sistema se conecte a Azure Pipelines y reciba trabajos de compilación.

Al configurar un agente privado, se proporciona la infraestructura en la que se ejecutan las compilaciones. Esto proporciona flexibilidad a la hora de montar y mantener los agentes.

Por ejemplo, puede:

  • Configurar el agente de compilación manualmente: esto consiste en montar el sistema, iniciar sesión e instalar las herramientas de compilación y el software del agente de forma interactiva.

  • Automatizar el proceso: esto consiste en montar el sistema y ejecutar un script o una herramienta para instalar las herramientas de compilación y el software del agente. Puede configurar el agente una vez que el sistema esté en línea o durante el proceso de aprovisionamiento.

    Por ejemplo, al ejecutar los agentes de compilación en Azure, puede usar una plantilla de Azure Resource Manager (plantilla de ARM) o Bicep para preparar el sistema y configurarlo para que actúe como agente de compilación, todo en un mismo paso. Terraform de HashiCorp es otra manera de automatizar el proceso. Terraform funciona con muchos tipos de infraestructura, incluido Azure.

  • Crear una imagen: creará una imagen, o instantánea, de un entorno configurado. Luego se usa la imagen para crear tantos sistemas idénticos como se necesiten en el grupo.

La configuración manual es una buena forma de empezar a trabajar, porque permite comprender el proceso. También es la manera más rápida de configurar cuando solo se necesita un agente de compilación.

La automatización es útil cuando se necesitan muchos agentes de compilación o hay que montar y desmontar infraestructura de compilación de forma periódica. Se puede pasar de un proceso manual a uno automatizado cuando exista la necesidad de tener varios agentes.

Las imágenes son una forma de automatización. Esto puede servir para ahorrar tiempo, ya que todo el software está preconfigurado. Como contrapartida, es posible que deba volver a compilar periódicamente las imágenes para incorporar las últimas revisiones del sistema operativo y las herramientas de compilación. Packer de HashiCorp es una herramienta popular para la creación de imágenes.

Para su escenario de juego espacial, decide usar un agente de compilación privado.

Comprobación de conocimientos

1.

Supongamos que estamos compilando un videojuego. El proceso de compilación tarda dos horas en ejecutarse y usa entre 18 GB y 20 GB de espacio en disco para compilar los recursos del juego. ¿Qué tipo de agente de compilación podría usar?

2.

Supongamos que vamos a compilar una aplicación que se ejecuta en macOS, Linux y Windows. ¿Cómo podríamos compilar la aplicación en cada plataforma de destino?

3.

Un agente de compilación autohospedado: