Si quieres tener un equipo ágil y que tus pasos a producción no sean un calvario, deberías plantearte muy seriamente implantar integración y entrega continua. Como ya estoy explicando en otras entradas (I, II y las que quedan…) Visual Studio Team Services es una herramienta de Microsoft en la nube que nos permite hacerlo. Para poder hacer integración continua necesitamos centralizar y automatizar la compilación del código. De esta forma podemos asegurar que todo va bien cuando intentamos, por ejemplo, integrar nuestra rama de desarrollo con master. Para gestionar todo esto VSTS tiene un sistema de «Builds» muy potentes que veremos en próximas entradas.
Estas «Builds» necesitan de un agente de compilación para funcionar. En esta entrada vamos a ver como gestionarlos y crear nuestros propios agentes.
Para llegar a la pantalla de configuración de los agentes hay que hacer clic sobre el icono de cofiguración (1) y a continuación sobre «Agent Queues» (2).
Podemos ver como existen varios pools (agrupaciones de agentes de compilación) del tipo Hosted (3). Estos son los que te ofrece Visual Studio Team Services por defecto y cubrirán las necesidades mas comunes. Pero puede pasar que con los agentes Hosted no sea suficiente para ti o tu organización por varios motivos:
- Los minutos de compilación que ofrece mensualmente VSTS gratuitamente no son suficientes.
- Es lento, ya que va encolando las peticiones de compilación.
- Necesitas alguna característica o herramienta especial para compilar tu solución. Si pulsamos sobre el agente podemos ver sus «Capabilities». Aquí puedes ver las características de los agentes hospedados.
La máquina sobre la que corra el agente de compilación, ha de tener instalado todo el software que la compilación vaya a necesitar, como por ejemplo la versión de Visual Studio que toque.
En estos casos, podemos crear nuestros propios agentes de compilación, que se guardaran por defecto en el pool de Default (4), aunque como veremos, esto se puede cambiar. Estos agentes pueden estar tanto en máquinas on-premise como en Azure. Para este ejemplo, he creado un nuevo agente en mi propio PC.
Crear un token de autenticación
Como paso previo a la creación del nuevo agente de compilación vamos a crear un token de autenticación que permita al agente comunicarse con VSTS, mas adelante lo vamos a necesitar.
Para ello ves a la opción de «Security» de tu usuario.
Selecciona crear un nuevo token de acceso, asigna un nombre y permisos de «Agent Pools (read, manage)».
Una vez creado asegúrate de guardar ese token, ya que una vez salgas de esa pantalla VSTS no te lo volverá a mostrar. Yo me lo he copiado en un bloc de notas para usarlo mas adelante.
Crear un nuevo agente
En la pantalla de configuración de agentes, clica sobre el botón de «Download Agent«, esto levanta un pop-up con la opción de descargar el agente y algunas instrucciones. Descarga el agente y a continuación abre una consola de Power Shell con permisos de administrador.
Crea una carpeta que será donde se almacenará el agente. En las instrucciones del pop-up anterior te dice que crees una carpeta llamada «agent», pero a mi personalmente me gusta pluralizar y crear todos los agentes dentro. Es muy común crear varios agentes para que las «builds» se puedan paralelizar. En mi ejemplo he creado la carpeta «agents» y dentro otra carpeta que he llamado «agent-test» (esto es a gusto del consumidor). Sitúate a nivel de la carpeta creada y lanza el script que te ha aparecido anteriormente en el pop-up.
PS C:\> mkdir agents ; cd agent-test PS C:\agent> Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$HOME\Downloads\vsts-agent-win7-x64-2.120.2.zip", "$PWD")
Este script va a buscar el agente descargado (da por hecho que esta en la carpeta de descargas por defecto) y crea el agente. Una vez creado, ya solo queda configurarlo.
Para ello tenemos que lanzar el comando
.\config.cmd
Ahora hay que introducir los datos que nos solicita:
- La Url del servidor, que será la de tu cuenta de VSTS: https://tucuenta.visualstudio.com
- Nos pide el tipo de autenticación, pulsa intro para seleccionar por defecto PAT.
- Ahora nos pide el token que hemos creado antes.
- El grupo de agentes. Por defecto (como hemos visto antes) es default. Pulsa intro para seleccionarlo o puedes crear un nuevo pool en la pantalla de agentes y seleccionar este.
- El nombre del agente. Puedes poner el nombre que quieras.
- La carpeta de trabajo, que por defecto es _work, pulsa intro para seleccionarla.
- Te pregunta si quieres que el agente se ejecute como servicio. Pulsa S (o Y si esta en ingles).
- La cuenta de usuario con la que se ejecutará el servicio del agente. También intro para seleccionar por defecto.
Si todo ha ido bien, ya tenemos nuestro agente funcionando y preparado para nuestras «builds». En próximas entradas veremos como seleccionar pools de compilación concretas. Te recomiendo que crees varios agentes (sigue el mismo procedimiento tantas veces como sea necesario. No necesitas bajar el agente cada vez, puedes ir lanzando el proceso desde distintas carpetas) para que de este modo puedan trabajar en paralelo si reciben varias peticiones a la vez. Como me dijeron el otro día: «Crea mas agentes, que son gratis».
Como curiosidad, la estructura de carpetas del agente una vez creado es la siguiente:
y dentro de la carpeta _diag se guardan los logs generados por el agente.
!Nos leemos!