Introducción
Azure Pipelines es un servicio de integración continua (CI) y entrega continua (CD) que permite compilar, probar y desplegar código de manera automática en cualquier plataforma y en cualquier nube. Este servicio es parte de Azure DevOps y soporta una amplia variedad de lenguajes de programación y tipos de proyectos.
Objetivos del Módulo
- Comprender qué son los Pipelines de Azure y su importancia.
- Configurar un pipeline básico.
- Integrar pruebas automatizadas en el pipeline.
- Desplegar aplicaciones utilizando Azure Pipelines.
¿Qué son los Pipelines de Azure?
Azure Pipelines permite automatizar la compilación y el despliegue de aplicaciones. Los pipelines pueden ser configurados para ejecutarse en respuesta a eventos como commits en un repositorio de código, o en horarios específicos.
Características Clave
- Integración Continua (CI): Automatiza la compilación y prueba del código cada vez que se realiza un cambio.
- Entrega Continua (CD): Automatiza el despliegue de aplicaciones a diferentes entornos.
- Compatibilidad Multiplataforma: Soporta Windows, Linux y macOS.
- Soporte para múltiples lenguajes: .NET, Java, Node.js, Python, PHP, Ruby, C++, Go, Xcode, entre otros.
Configuración de un Pipeline Básico
Paso 1: Crear un Proyecto en Azure DevOps
- Inicia sesión en Azure DevOps.
- Crea un nuevo proyecto o selecciona uno existente.
Paso 2: Configurar el Repositorio de Código
- Navega a la sección de "Repos" en tu proyecto.
- Clona el repositorio en tu máquina local o sube tu código existente.
Paso 3: Crear un Pipeline
- Ve a la sección de "Pipelines" en tu proyecto.
- Haz clic en "New Pipeline".
- Selecciona el repositorio de código que deseas usar.
- Elige la opción de configuración YAML o visual. Para este ejemplo, usaremos YAML.
Ejemplo de Archivo YAML para un Pipeline Básico
# Archivo azure-pipelines.yml trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '5.x' installationPath: $(Agent.ToolsDirectory)/dotnet - script: dotnet build --configuration Release displayName: 'Build Project' - script: dotnet test --configuration Release displayName: 'Run Tests'
Explicación del Archivo YAML
- trigger: Define la rama que activará el pipeline (en este caso,
main
). - pool: Especifica la imagen de la máquina virtual que se usará para ejecutar el pipeline.
- steps: Lista de pasos a ejecutar. En este ejemplo:
- UseDotNet@2: Instala el SDK de .NET.
- dotnet build: Compila el proyecto.
- dotnet test: Ejecuta las pruebas.
Integración de Pruebas Automatizadas
Las pruebas automatizadas son cruciales para asegurar la calidad del código. En el ejemplo anterior, ya hemos incluido un paso para ejecutar pruebas.
Ejemplo de Pruebas Unitarias en .NET
using NUnit.Framework; namespace MyApp.Tests { public class Tests { [SetUp] public void Setup() { } [Test] public void Test1() { Assert.Pass(); } } }
Configuración en el Pipeline
Asegúrate de que el comando dotnet test
esté incluido en tu archivo YAML para ejecutar las pruebas automáticamente.
Despliegue de Aplicaciones
Azure Pipelines también permite automatizar el despliegue de aplicaciones a diferentes entornos como Azure App Service, Kubernetes, entre otros.
Ejemplo de Despliegue a Azure App Service
# Continuación del archivo azure-pipelines.yml - task: AzureWebApp@1 inputs: azureSubscription: 'NombreDeTuSuscripción' appName: 'NombreDeTuAppService' package: '$(System.DefaultWorkingDirectory)/**/*.zip'
Explicación del Despliegue
- AzureWebApp@1: Tarea que despliega la aplicación a Azure App Service.
- azureSubscription: Nombre de la suscripción de Azure.
- appName: Nombre del App Service en Azure.
- package: Ruta del paquete a desplegar.
Ejercicio Práctico
Ejercicio 1: Crear y Configurar un Pipeline Básico
- Crea un nuevo proyecto en Azure DevOps.
- Sube un proyecto de .NET al repositorio.
- Configura un pipeline utilizando el archivo YAML proporcionado.
- Asegúrate de que el pipeline se ejecute correctamente y que las pruebas pasen.
Ejercicio 2: Desplegar una Aplicación a Azure App Service
- Configura un App Service en Azure.
- Modifica el archivo YAML para incluir el paso de despliegue.
- Ejecuta el pipeline y verifica que la aplicación se despliegue correctamente.
Soluciones
Solución al Ejercicio 1
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '5.x' installationPath: $(Agent.ToolsDirectory)/dotnet - script: dotnet build --configuration Release displayName: 'Build Project' - script: dotnet test --configuration Release displayName: 'Run Tests'
Solución al Ejercicio 2
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '5.x' installationPath: $(Agent.ToolsDirectory)/dotnet - script: dotnet build --configuration Release displayName: 'Build Project' - script: dotnet test --configuration Release displayName: 'Run Tests' - task: AzureWebApp@1 inputs: azureSubscription: 'NombreDeTuSuscripción' appName: 'NombreDeTuAppService' package: '$(System.DefaultWorkingDirectory)/**/*.zip'
Conclusión
En este módulo, hemos aprendido sobre los Pipelines de Azure, su configuración básica, la integración de pruebas automatizadas y el despliegue de aplicaciones. Azure Pipelines es una herramienta poderosa que facilita la integración y entrega continua, mejorando la eficiencia y calidad del desarrollo de software.
Próximos Pasos
En el siguiente módulo, exploraremos los Repositorios de Azure, donde aprenderemos a gestionar el código fuente y colaborar de manera efectiva con otros desarrolladores.
Curso de Azure
Módulo 1: Introducción a Azure
- ¿Qué es Azure?
- Configuración de la cuenta de Azure
- Descripción general del portal de Azure
- Administrador de recursos de Azure
Módulo 2: Servicios principales de Azure
- Máquinas virtuales de Azure
- Servicios de aplicaciones de Azure
- Almacenamiento de Azure
- Redes de Azure
Módulo 3: Bases de datos de Azure
- Base de datos SQL de Azure
- Azure Cosmos DB
- Base de datos de Azure para MySQL
- Base de datos de Azure para PostgreSQL
Módulo 4: Seguridad en Azure
- Gestión de identidad y acceso de Azure
- Centro de seguridad de Azure
- Azure Key Vault
- Protección DDoS de Azure
Módulo 5: Azure DevOps
Módulo 6: Servicios avanzados de Azure
- Servicio de Kubernetes de Azure (AKS)
- Funciones de Azure
- Aplicaciones lógicas de Azure
- Servicios cognitivos de Azure
Módulo 7: Monitoreo y gestión
- Monitor de Azure
- Análisis de registros de Azure
- Información de aplicaciones de Azure
- Automatización de Azure