ICM / how-to-do / Cómo montar una Pipeline en Azure DevOps

Cómo montar una Pipeline en Azure DevOps

24 diciembre 2021 | Elena González

En esta entrada, vamos a explicarte cómo montar una Pipeline en Azure DevOps para generar imágenes de Docker. Pero primero, vamos a proceder a explicar los conceptos básicos.

¿Qué es una Pipeline?

Una pipeline es un grupo de procesos automatizados que permite a los desarrolladores y los profesionales DevOps a, eficientemente, compilar, buildear y desplegar código a sus plataformas de producción.

¿Qué es Azure DevOps?

Azure DevOps es un grupo de servicios de desarrollador de Azure para poder crear y construir software. Es un conjunto de servicios totalmente integrados que proporciona todas las herramientas necesarias para crear y mantener un backlog, alojar sus repositorios de código fuente, implementar la integración continua (CI), junto con la entrega y los flujos de trabajo de prueba para tus productos antes de lanzarlos.

La integración continua, o CI en inglés (Continuous Integration), es el proceso de fusionar continuamente cualquier código nuevo en la base de código maestro / común y construirlo para asegurarse de que no se rompa nada. Azure DevOps tiene una sección completa de la plataforma dedicada a CI. Pipelines es un servicio maduro y con todas las funciones para manejar tanto su CI como su CD (Continuous Delivery).

¿Qué es una Pipeline en Azure DevOps?

Una pipeline permite a desarrolladores, equipos DevOps, y otros a escribir y distribuir código fiable. En el mundo Microsoft, la forma de crear una pipeline es con Azure DevOps, con una herramienta llamada Azure Pipelines. Ésta te permite correr automáticamente builds, realizar pruebas y desplegar código en diferentes entornos de desarrollo y producción, a la vez que puedes utilizar la funcionalidad de Azure DevOps Test para realizar pruebas en tus propios entornos de prueba.

Azure DevOps también cuenta con Azure Repos, su propio repositorio de GIT integrado con completa compatibilidad con cualquier cliente GIT. Azure Repos es un conjunto de herramientas de control de versiones que se puede usar para administrar tu código. Ya sea el proyecto de software grande o pequeño, usar el control de versiones lo antes posible es una buena idea. Los sistemas de control de versiones son software que realizan un seguimiento de los cambios que se ejecutan en el código a lo largo del tiempo. A medida que se edita el código, éste le dice al sistema de control de versiones que tome una instantánea de los archivos. El sistema de control de versiones guarda esa instantánea de forma permanente para que pueda recuperarse más tarde en caso de necesidad.

Azure Repos también es compatible con Team Foundation Version Control (TFVC), un sistema de control de versiones centralizado. Por lo general, los miembros del equipo solo tienen una versión de cada archivo en sus máquinas de desarrollo. Los datos históricos se mantienen solo en el servidor, y las ramas se basan en rutas y se crean en el servidor.

Azure DevOps + GITHUB

Antes de proceder, hay unos requisitos previos para la creación:

  • La creación y/o uso de una cuenta de GitHub.
  • Una organización y proyecto en Azure DevOps, ya sea nueva o ya creada.
  • Una cuenta de Azure.

Una vez se tiene en cuenta esto, se debe iniciar sesión en Azure y seleccionar el icono en la esquina superior derecha de Azure Cloud Shell.

azure devops pipeline

A continuación, se deberán ejecutar unos comandos para crear un grupo de recursos y una Azure Container Registry:

Para crear un grupo de recursos:

az group create –name myapp-rg –location eastus

Para crear un Azure Container Registry:

az acr create –resource-group myapp-rg –name myContainerRegistry –sku Basic

También se podría usar la interfaz Azure Portal web para crear el Azure Container Registry. Algo importante a tener en cuenta es que se debe habilitar la cuenta de usuario administrador para poder implementar una imagen de Docker desde un Azure Container Registry.

Azure DevOps + GITHUB YAML

Continuando con la creación de la canalización, volvemos a iniciar sesión en nuestra organización de Azure DevOps y entramos en nuestro proyecto. Una vez en él seleccionamos Pipelines y, a continuación, clickamos en Nueva canalización, o Create Pipeline.

azure devops pipeline

Una vez en la pantalla de creación, al estar utilizando GitHub, seleccionamos GitHub YAML. Entonces nos pedirá Autorizar Azure Pipelines para proporcionar los permisos adecuados para acceder al repositorio. Es posible que se pida el inicio de sesión a GitHub. En caso de que fuera así, simplemente se escribe GitHub credencials y, a continuación, se selecciona el repositorio en la lista de repositorios.

Lo siguiente será la pestaña de Configurar. En esta seleccionamos Docker: compilar e insertar una imagen para Azure Container Registry.

profile

Una vez cogida dicha opción, seleccionamos la suscripción de Azure y el registro de contenedor en el menú desplegable. Hecho esto, se nos pedirá proporcionar un nombre para la imagen del contenedor. Entonces le damos a Validar y configurar.

Canalización Azure

Para crear la canalización en Azure Pipelines se deberá:

  • Crear una conexión de servicio del registro de Docker para permitir que la canalización pueda insertar imágenes en el registro de contenedor.
  • Esto generará un archivo azure-pipelines.yml que define la canalización.

 

Hechos los pasos anteriores, revisamos la canalización YAML y seleccionamos Guardar y ejecutar cuando esté listo.

Agregamos un mensaje de confirmación y, a continuación, seleccionamos de nuevo Guardar y ejecutar para confirmar los cambios y ejecutar la canalización. A medida que se vaya ejecutando la canalización, se puede ir seleccionando el trabajo de compilación para ver su estado.

La canalización que se acaba de crear en los pasos anteriores se generó a partir de la plantilla de contenedor de Docker YAMl. La fase de compilación usa la tarea de Docker para compilar e insertar la imagen de Docker en el registro de Docker@2 contenedor.

azure devops pipeline

En caso de que no se siguiera utilizando dicha aplicación siempre se pueden eliminar los recursos que se crearon en los puntos anteriores. Para eliminar el grupo de recursos se debería ejecutar:

az group delete –name myapp-rg

Y así es cómo hemos montado una Pipeline en Azure Devops para generar imágenes de Docker. Esperamos que os haya sido interesante.