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.
Más info: https://azure.microsoft.com/es-es/products/devops/repos
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.
Más info: https://azure.microsoft.com/es-es/products/devops/pipelines
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 completo:
Se puede ver también el histórico de lanzamientos:
En este histórico se muestra el nombre de pipeline, el usuario que lo lanzo, proyecto, rama de la que esta tirando (develop/master/another…) y el commit de esa rama por si hubo cambios posteriores, duración y si hubo éxito:
En el apartado de Library podremos añadir diferentes elementos; 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 se tenga, máquinas virtuales con Azure o los agentes de Azure:
En cuanto a la seguridad, podremos definir diferentes grupos de usuarios los cuales tendrán definidos diferentes permisos para manejar los pipelines:
Entre esos permisos estan: crear pipeline, borrar pipelines, borrar ejecuciones, parar ejecuciones, lanzar ejecucciones etc:
Azure Artifacts
Azure Artifacts es el repositorio de dependencias de Azure DevOps, por tanto puede compararse con Nexus.
Más info: https://azure.microsoft.com/es-es/products/devops/artifacts
La subida de artefactos se realiza siguiendo estos pasos (ejemplo Maven):
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
Github Advanced Security es la herramienta de Azure DevOps para la inspección continua de la calidad del código a través de diferentes herramientas (como SonarQube):
Más info: https://azure.microsoft.com/es-es/products/devops/github-advanced-security
Permite:
Examen de código para un análisis estático eficaz que le ayuda a encontrar y corregir vulnerabilidades en el código mientras lo escribe
Examen de dependencias para detectar componentes vulnerables de código abierto y ofrecer una guía de corrección sencilla
Examen de secretos para buscar secretos expuestos en el Azure Repos e impedir que se envíen nuevos secretos en el código
Conjunto de herramientas de pruebas de seguridad nativas de la plataforma Azure DevOps
Se habilitar en esta opción de configuración:
Y permite por ejemplo:
Azure Boards
Azure Boards permite a los equipos planear, realizar un seguimiento y analizar el trabajo en todo el proceso de desarrollo junto con metodologías ágiles.
Más info: https://azure.microsoft.com/es-es/products/devops/boards
Ofrece una interfaz y funcionalidad similar 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
Azure Test Plans proporciona herramientas para definir y ejecutar pruebas de forma sencilla permitiendo gestionar pruebas manuales, pruebas de aceptación del usuario, pruebas exploratorias y la recopilación de comentarios de las partes interesadas.
Más info: https://azure.microsoft.com/es-es/products/devops/test-plans
Una vez definidas las pruebas en la parte de Azure Boards, se habilita el plan de pruebas en la parte de Azure Test Plans.
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.
Azure Container Registry
El ACR permite crear, almacenar, proteger, examinar, replicar y administrar imágenes de contenedor y artefactos con una instancia con replicación geográfica y totalmente administrada.
Más info: https://azure.microsoft.com/es-es/products/container-registry
ACR no forma parte de 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).
Para subir una imagen 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: