El software debe ser escrito, probado e implementado en un entorno de producción. Para hacerlo de manera automatizada, los desarrolladores y DevOps construyen pipelines de CI/CD o pipelines de construcción/publicación que automatizan gran parte de esta actividad.
A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.
Los Pipelines de Azure te permiten ejecutar automáticamente construcciones, realizar pruebas e implementar código (lanzamiento) en varios entornos de desarrollo y producción. Pero ¿qué pasa si nunca has oído hablar de Azure DevOps o de un pipeline antes, o nunca has construido uno con Azure DevOps? Si es así, este tutorial de Azure Pipelines es para ti.
Un gran agradecimiento a Peter De Tender, Entrenador Técnico de Microsoft Azure, por su ayuda con este artículo.
Resumen del Proyecto
Este es un artículo de Proyecto en el que cubrimos cómo construir un proyecto o implementar una solución. Cada sección será pasos acumulativos que se basan en los anteriores.
En este Proyecto, vas a aprender, desde cero, cómo crear tu primer pipeline de Azure DevOps. Aprenderás conceptos como invocar construcciones desde un commit de control de versiones Git, ejecutar pruebas automáticamente y finalmente liberar paquetes a entornos. Al final de este Proyecto, tendrás una aplicación de comercio electrónico de muestra implementada como una Azure WebApp.
Este Proyecto debería tomarte 30 minutos completarlo.
Ten en cuenta que si sigues este proyecto y eliminas inmediatamente los recursos creados, no se te cobrará en tu cuenta de Azure. ¡No olvides eliminarlos!
Público Objetivo
Este proyecto cubrirá lo más básico para configurar tu primer Azure Pipeline en la interfaz web de Azure DevOps. Aprenderás mucho de este proyecto si eres completamente nuevo en Azure Pipelines, pero quizás no tanto si ya has construido tus propios pipelines antes o eres un experto en Azure Pipelines.
Requisitos del Entorno
Si planeas seguir este proyecto paso a paso, asegúrate, como mínimo, de tener lo siguiente:
- Una cuenta de Azure
- Ya has iniciado sesión en el Portal de Azure con derechos de administrador global o similares.
- A GitHub account
- Un repositorio Github vacío creado
- Una aplicación web de Azure vacía implementada con dotnetcore 2.2 y Linux como plataforma.
Creando una Organización de Azure DevOps
Como estamos comenzando desde cero absoluto, primero crearás el objeto “base” en el que se contienen todas las características y servicios de Azure DevOps, llamado organización. La organización es donde se almacenan todos los proyectos, que aprenderás a crear en la siguiente sección.
- Desde el Portal de Azure, navega hasta Todos los servicios, busca DevOps y selecciona Azure DevOps. Puedes ver qué esperar a continuación. Esto abrirá la hoja de Azure DevOps, como se muestra a continuación.

2. A continuación, haz clic en Mis Organizaciones de Azure DevOps y proporciona tus credenciales de Azure. Serás llevado a una página donde puedes crear una nueva organización, como se muestra a continuación. Una vez aquí, haz clic en el botón azul Crear nueva organización.

3. En la siguiente página, proporciona un nombre para la organización. Si tienes problemas con el uso de un nombre específico, asegúrate de revisar las convenciones de nomenclatura de organizaciones de Azure DevOps. En esta pantalla, también especifica una región de Azure más cercana a ti. Una vez hecho, haz clic en Continuar.

¡En este punto, tu organización de Azure DevOps está creada!
Creando un Proyecto de Azure DevOps
El siguiente paso es crear un proyecto. Un proyecto es un contenedor para el flujo de trabajo que se creará, varios artefactos y cualquier otra información relacionada con un servicio o software en particular.
Azure DevOps te brinda la capacidad de crear un proyecto durante el mismo flujo de trabajo que la creación de una organización, como se realizó anteriormente. Si has seguido los pasos, ahora deberías ver una página de creación de proyecto como se muestra a continuación.
- En la página de creación del proyecto, proporciona un nombre para tu proyecto en el campo Nombre del Proyecto. Para este proyecto, usarás un proyecto de Azure DevOps llamado devopsdemo.
- Confirma la creación del proyecto haciendo clic en el botón + Crear Proyecto.
- Por ahora, deja la Visibilidad establecida en Privado. Esto garantiza que tu proyecto no esté expuesto a Internet. Un proyecto público permite a no miembros y usuarios no registrados acceso de solo lectura a los artefactos del proyecto.

En este punto, se ha creado tu espacio de trabajo de Azure DevOps (proyecto + organización). Si has seguido los pasos, ahora tendrás una organización de Azure DevOps llamada pdtitws123 y un proyecto dentro de esa organización llamado devopsdemo.

Construyendo un Canal de Compilación en Azure DevOps
Ahora que tienes una organización y un proyecto de Azure DevOps configurados, puedes crear un canal de compilación dentro. El canal es donde ocurre toda la magia. Es donde crearás compilaciones para realizar diversas tareas como compilar código, traer dependencias y más.
- Desde el panel de control, selecciona Pipelines y luego Builds.

2. Verás un mensaje que te indica que aún no se han encontrado canalizaciones de compilación. Haz clic en Nueva canalización para comenzar a crear la canalización de compilación.

3. Luego se te pedirá que indiques dónde se encuentra tu código. En este Proyecto, el código se almacena en un repositorio de GitHub. Selecciona GitHub. Este es el lugar donde se almacena el código y de donde vendrán los disparadores para invocar la compilación.

4. Una vez que hagas clic en GitHub, se te pedirá que proporciones las credenciales de tu cuenta de GitHub como se muestra a continuación. ¡Antes de comenzar este paso, recuerda tener creado un repositorio GitHub vacío como se define en la sección de Prerrequisitos de este artículo!

5. A continuación, confirma el paso en el que se te pide autorizar Azure Pipelines. Esto asegura que Azure DevOps tenga permiso para acceder a tus repositorios de GitHub.

Vinculando un Repositorio GitHub a la Canalización de Compilación
Una vez que hayas otorgado permiso a Azure DevOps para acceder a tu cuenta de GitHub, ahora vincula un repositorio GitHub a la canalización de compilación.
- Selecciona el repositorio GitHub vacío que has creado para este Proyecto.

2. Permite que el proyecto lea, escriba y verifique el código fuente del repositorio que seleccionaste anteriormente. Luego, confirma este proceso haciendo clic en Aprobar e Instalar.

3. Al confirmar, verás que se genera un error como se muestra a continuación. Este error ocurrirá porque el Repositorio GitHub seleccionado está vacío.

En este punto, tu repositorio GitHub estará vinculado a tu canalización de compilación de Azure DevOps.
No es necesario crear un nuevo pipeline cada vez que desees vincular un repositorio de GitHub a un pipeline de compilación de Azure DevOps.
Populando el código de muestra del repositorio de GitHub
El pipeline de compilación de Azure DevOps no se ejecutará sin algún código en el repositorio de GitHub. El código no importa necesariamente en este momento. Para obtener algo de código en el repositorio, utilizaremos un repositorio existente para clonar algo de código. En este repositorio, tengo todo el código fuente disponible para publicar una aplicación de muestra de comercio electrónico en Azure WebApps.
El código de muestra para este repositorio contendrá una aplicación de comercio electrónico llamada SimplCommerce. Esta aplicación es una aplicación de código abierto en dotnetcore que es más realista que el típico proyecto de “hola mundo”.
- Ve a este repositorio de GitHub de muestra y haz clic en Importar código como se muestra a continuación.

2. Para la URL de clonación del repositorio antiguo, utiliza http://github.com/007FFFLearning/SimplDev y haz clic en Comenzar importación.

Cuando se complete con éxito el paso de importación del repositorio, actualiza la ventana del Pipeline de Azure DevOps, lo que debería permitirte continuar ahora.
Inspección y visualización del Pipeline de Compilación en YAML
En este punto, estarás en la fase de revisión del proceso de creación del pipeline. Ahora se te presentará una representación del pipeline de construcción en formato YAML. Este archivo YAML se genera automáticamente en función de la detección del lenguaje de código fuente, que en este proyecto es dotnetcore.
Otro de los beneficios reales de Azure DevOps es el pipeline YAML. Con muchas otras herramientas de DevOps, debes construir manualmente un archivo de pipeline.

Ejecución manual del Azure Build Pipeline
En un pipeline de integración continua (CI), la construcción generalmente se desencadena por un commit en el control de origen. Sin embargo, también puedes iniciar manualmente el pipeline de construcción. Vamos a iniciar manualmente un pipeline de construcción para ver qué sucede.
Si has estado siguiendo, en este punto deberías poder hacer clic en Run para iniciar el pipeline de construcción. Esto iniciará el proceso de construcción del pipeline, como se muestra en la captura de pantalla a continuación.

Después de unos segundos, verás que el proceso se ejecutará en macOS, como se muestra a continuación. El pipeline de construcción proporcionará información en tiempo real a medida que se ejecuta cada trabajo y tarea en el pipeline.

El pipeline de construcción repetirá el mismo proceso para otros sistemas operativos (en este ejemplo), como se muestra a continuación. Los pasos tomados variarán según cómo se haya construido el archivo YAML.

Una vez que la construcción haya finalizado, te recibirán marcas de verificación verdes, como se muestra a continuación. Esta captura de pantalla indica que la construcción en cada plataforma se realizó con éxito.

Has creado ahora un canal de compilación en Azure DevOps!
Construyendo un canal de implementación en Azure DevOps
Se ha creado el canal de compilación, lo cual es un gran avance. Si te detuvieras en este punto, estarías bien encaminado hacia un canal automatizado completo. ¡Pero no hemos terminado! El objetivo final del software es ser implementado para que los clientes lo puedan usar. ¡Es hora de automatizar también una implementación con un canal de implementación!
A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.
- Desde Azure DevOps, haz clic en Pipelines y luego en Releases.

2. A continuación, selecciona Nuevo y luego Nuevo Canal de Implementación. Esto inicia el asistente del nuevo canal de implementación.

3. En la lista de plantillas a la derecha, selecciona Implementación de la aplicación de servicio de Azure. Verás muchas plantillas diferentes disponibles para ahorrar tiempo en la creación de futuros canales de implementación.

4. Proporciona una descripción para el Nombre de la Etapa. La etapa contendrá tareas de implementación. Para este proyecto, usa el nombre Desplegar_en_webapp.

El canal de implementación debería verse ahora como en la captura de pantalla siguiente.

5. En el campo de Etapas, selecciona 1 trabajo, 1 tarea. Este campo es donde eventualmente proporcionarás la configuración del entorno de la aplicación web de Azure que usarás para la implementación real.
6. Como parte de la plantilla de implementación de la aplicación de servicio de Azure, vienen algunos parámetros que necesitarás definir en esta pantalla.
- Nombre de escenario: Deploy-to-webapps2 en este ejemplo.
- Suscripción de Azure: seleccione su suscripción y confirme con Autorizar (necesita credenciales)
- Tipo de aplicación: Aplicación web en Linux
- Nombre del servicio de la aplicación: la aplicación web que creó anteriormente

7. Cuando haya terminado, haga clic en Pipeline en el menú superior de su proyecto de Azure Pipeline como se muestra a continuación. Esto lo llevará a la pantalla principal y le permitirá completar el siguiente paso, que es especificar los artefactos.

Agregando Artefactos al Pipeline de Lanzamiento de Azure DevOps
Dentro de un pipeline de lanzamiento, hay muchos elementos diferentes que deben ser desplegados. Estos elementos se llaman artefactos. Los artefactos, en pocas palabras, son componentes desplegables de su aplicación. Los Pipelines de Azure pueden desplegar artefactos que son producidos por una amplia gama de fuentes de artefactos.
En esta sección, cubriremos cómo agregar artefactos al pipeline de lanzamiento.
- Mientras esté en la pantalla de Pipeline, haga clic en Agregar un Artefacto.
- El Tipo de Origen ya está establecido en Construcción, que es lo que desea, ya que estará desplegando la salida del pipeline de construcción creado anteriormente. Elija el pipeline de construcción creado anteriormente en el menú desplegable Origen (pipeline de construcción).
- Cuando hayas terminado, haz clic en Agregar para guardar la configuración.

4. Finalmente, haz clic en el botón Guardar en la esquina superior derecha de la pantalla para guardar el canal de lanzamiento.
Creando el Lanzamiento en Azure DevOps
Una vez creado el canal de lanzamiento, comenzarás a crear lanzamientos. Un lanzamiento es una ejecución particular del canal. Piensa en el canal de lanzamiento como la plantilla y en instancias específicas de ese canal como lanzamientos. Una vez que tengas un lanzamiento, ese lanzamiento puede ser desplegado.
Para crear un lanzamiento:
- Haz clic en el botón Crear Lanzamiento en la esquina superior derecha de la ventana, como se muestra a continuación.

2. No vas a hacer nada especial, así que en la pantalla Crear un nuevo lanzamiento, acepta los valores predeterminados y haz clic en Crear. Solo tienes una etapa en este momento y una única versión del artefacto de construcción para desplegar ahora.

3. Después de unos segundos, recibirás una notificación (la barra verde) de que el lanzamiento ha sido creado, como se muestra a continuación. Ahora haz clic en Lanzamiento-1, lo que te redirigirá a los detalles del proceso de lanzamiento.

¡Has creado un lanzamiento y está listo para ser desplegado!
Desplegando un Lanzamiento Manualmente
A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.
Mientras estás en el lanzamiento Lanzamiento-1 que creaste anteriormente:
- Selecciona la etapa Deploy_to_webapp y confirma Desplegar. Cuando lo hagas, el estado cambiará a En progreso como se muestra a continuación. En este punto, la versión está obteniendo el código fuente del canal de compilación ejecutado anteriormente y lo está enviando a la instancia de Azure WebApp.
Este paso iniciará un trabajo que se ejecutará en segundo plano en un agente copiando el código fuente y realizando el ciclo de lanzamiento real.

2. Haz clic en la etapa mientras está en progreso. Verás cualquier información de registro que se muestre en el área de salida de la consola.

Una vez completado, la etapa debería mostrar Éxito como se muestra a continuación.

Si todo salió bien, el lanzamiento debería haber terminado y ahora deberías tener una aplicación web publicada en una aplicación web de Azure!
Inspección del Azure WebApp Desplegado
Ahora que todo el proceso está completo, asegúrate de revisar los frutos de tu trabajo.
- Inicia sesión en el Portal de Azure, navega hasta la Azure WebApp que seleccionaste en el canal de lanzamiento como objetivo y copia la URL como se muestra a continuación.

2. Ahora pegue esa URL en un navegador proporcionando la URL de la aplicación web de Azure. Su navegador ahora debería cargar la aplicación de muestra de comercio electrónico, similar a la página de inicio que se muestra a continuación.

¡Ya lo has hecho todo! ¡Ahora tienes una aplicación web de Azure implementada desde un repositorio de GitHub capaz de ser automatizada al máximo!
Limpieza
Si seguiste todo este Proyecto, ahora tienes una nueva organización de Azure DevOps, proyecto, canal de compilación, canal de lanzamiento y lanzamiento. Si has terminado de probar las cosas, asegúrate de eliminar la organización original creada para no correr el riesgo de que te cobren por los recursos de Azure.
Para hacerlo:
- Vuelve a tu espacio de trabajo principal de Azure DevOps.
- Haz clic en Configuración de la organización en la esquina inferior izquierda.
- En la pantalla de Información general, haz clic en el botón Eliminar en la parte inferior de la página, debajo de Eliminar organización.
- Escribe el nombre de la organización y luego haz clic en Eliminar. Esto debería eliminar todo el trabajo que acabas de realizar.
Tus Conclusiones
Si seguiste las instrucciones en este Proyecto, has creado un pipeline de CI/CD completo desde cero en Azure DevOps. Deberías tener una buena idea de en qué consiste este proceso ahora.
Los Pipelines de Azure pueden ser mucho más profundos de lo que hiciste en este Proyecto, pero ahora deberías tener un conocimiento básico de todo el proceso.