Introducción
En este post veremos las herramientas que componen la suite Azure DevOps.
Pasos previos
En primer lugar, se debe crear una cuenta en Azure y después crear una instancia de Azure DevOps (https://azure.microsoft.com/es-es/products/devops )
Donde crearemos la organización y dentro el proyecto:
Azure Repos
Azure Repos es un repositorio de código privado. que cumple el estándar Git.
Su funcionamiento dno se diferencia demasiado de cualquier otro repositorio de código Git, responde a los mismos comandos y presenta un formato similar:
En este caso se ha hecho un clonado del repositorio test-op:
Los commits, la gestión de ramas y de tags son muy similares a GitLab/GitHub:
La autenticación de Azure Repost está integrada con el AD de Azure.
La configuración de permisos del repositorio se realiza mediante grupos que aplican también al resto de herramientas de la Suite:
Para una configuración exclusiva del Azure Repos, existe esta opción:
Azure Pipelines
Azure Pipelines es el servidor de automatización de Azure DevOps, combina la integración continua, pruebas continuas y la entrega continua.
El funcionamiento de Azure Pipelines es muy similar a Jenkins, aunque opta por YAML como lenguaje de scripting.
Al crear un pipeline, se le puede indicar de donde coger el código del pipeline.
En el pipeline se podrá elegir la imagen que tiene el agente, los diferentes steps que tenemos y partes de script que se lanza en cada step (como en Jenkins):
A la hora de crear el pipeline, tendremos un apartado de tareas predefinidas (en el asistente) que nos pueden ayudar a la hora de crearlo (ej: curl para subir un fichero, conexion ssh contra una maquina, clonar un directorio git…):
Una vez lanzas un pipeline, tendremos un apartado de información donde podremos ver quien ha ejecutado ese pipeline, cuando, como ha ido el proceso, por que ha fallado, etc:
Podremos ver el log del pipeline que se ha ejecutado al igual que en Jenkins, job por job:
O el log de manera completa:
Ademas de incluso poder descargarlos:
Se podrá ver el histórico de lanzamientos:
Si nos fijamos, nos da bastante informacion como el nombre de pipeline, el usuario que lo lanzo (dentro de esa ejecucion sale el nombre completo), el proyecto, la rama de la que esta tirando (develop/master/another…) y el commit de esa rama por si hubo cambios posteriores, duraccion y si hubo exito:
En el apartado de Library podremos añadir diferentes cosas; por ejemplo variables de entorno globales que queramos utilizar en diferentes pipelines o claves privadas:
Para las claves privadas habría que cambiar en Library al apartado de Secure Files.
Para poder lanzar estos pipelines puedes utilizar diferentes recursos como un entorno de Kubernetes (AKS) que ya tengas, maquinas virtuales con Azure o los agentes de Azure:
En cuanto a la seguridad, podremos definir diferentes grupos de usuarios los cuales tendran definidos diferentes permisos para manejar los pipelines:
Entre esos permisos estan: crear pipeline, borrar pipelines, borrar ejecuciones, parar ejecuciones, lanzar ejecucciones etc:
Azure Artifacts
En este caso, Azure Artifacts ofrece una funcionalidad similar a Nexus (en la versión gratuita solo permite 2GB):
Por ejemplo, para subir artefactos de Maven sería siguiendo estas instrucciones:
Creando el token como indica en la documentación:
Para indicar el usuario y token, se debe crear un fichero settings.xml que se debe configurar al realizar el deploy (en este caso se ha definido un profile “testArtifact para no modificar el resto de configuración existente):
mvn deploy -PtestArtifact -s ../settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>testArtifact</id> <username>prubiog</username> <password>TOKEN</password> </server> </servers> </settings>
GitHub Advanced Security
Esta funcionalidad no se ha podido probar ya que requiere tener una suscripción no gratuita para poder activarla en Azure Repos. Sería similar a lo que ofrece SonarQube. Se habilitaría en esta opción de configuración:
Azure Boards
Ofrece una interfaz y funcionalidad similar al Planner de Microsoft o a un tablero Trello, con capacidad de ordenar las tareas, definir sprints, etc:
En esta parte también se definen las pruebas, que se podrán ejecutar en la parte de Azure Test Plans:
Azure Test Plans
Una vez definidas esas pruebas en la parte de Azure Boards, se habilita el plan de pruebas en la parte de Azure Test Plans. En este sentido, esta dependencia le quita capacidad a la herramienta al depender de lo definido en Azure Boards, dependiendo de las Issues o Tasks definidas allí.
Una vez vistas las pruebas definidas, se pueden ejecutar, con los pasos definidos en cada una de ellas y marcando cada una como ejecutada correctamente, fallada, bloqueada o no aplica. Permite la ejecución desde otra ventana del navegador donde aparecen los pasos o también con una aplicación de escritorio que permite descargar.
Azure Container Registry (fuera de la suite)
El ACR es un recurso que no está en la suite de Azure DevOps se crea como un recursos más en la consola de Azure. Primero se debe crear un grupo de recursos y dentro del mismo se pueden crear diferentes tipos, incluido el “registro de contenedor” (aparece buscando registry en el buscador de recursos). La configuración es básica, ya que en el plan gratuito apenas deja personalizar ningún aspecto:
Para subir una imagen, es bastante sencillo, solamente hay que hacer login con el cliente de azure (azure-cli) y eso permite conectar con el registry, pudiendo tagear una imagen y subirla al registro:
Ofrece servicios de autenticación mediante token (para clústers de kubernetes por ejemplo) y también permite replicación geográfica para cumplir con la alta disponibilidad. Además, integra Microsoft Defender que permite analizar las imágenes subidas en busca de vulnerabilidades: