Introducción: Por qué CI/CD es crítico para proyectos C# (.NET)
El desarrollo de software moderno es imposible sin automatización. Los procesos manuales de compilación, prueba e implementación no solo son lentos, sino que también son propensos a errores. Para los desarrolladores de C# que trabajan con el ecosistema .NET, la implementación de prácticas de CI/CD (Integración Continua / Despliegue Continuo) se ha convertido en un estándar de la industria.
GitHub Actions es una herramienta potente y flexible para automatizar flujos de trabajo, integrada directamente en GitHub. Permite crear pipelines (workflows) que reaccionan a eventos en el repositorio: pushes, creación de Pull Requests, lanzamientos y mucho más. En este artículo, analizaremos cómo configurar un pipeline CI/CD completo para un proyecto C# basado en .NET utilizando GitHub Actions.
Aprenderás cómo:
- Configurar la compilación automática del proyecto.
- Ejecutar pruebas unitarias (por ejemplo, xUnit o NUnit).
- Publicar artefactos de compilación.
- Desplegar la aplicación automáticamente (por ejemplo, en Azure, Docker Hub o un servidor).
1. Fundamentos de GitHub Actions: Workflow, Jobs y Steps
Antes de escribir código, comprendamos los conceptos básicos de GitHub Actions.
- Workflow (Flujo de trabajo): Es un proceso automatizado que defines en un archivo YAML dentro de la carpeta
.github/workflows. Un workflow se activa mediante un trigger (por ejemplo, un push a la rama main). - Job (Tarea): Un conjunto de pasos (steps) que se ejecutan en un mismo runner (máquina virtual). Los Jobs pueden ejecutarse de forma secuencial o en paralelo.
- Step (Paso): Un comando o acción (action) individual. Puede ser la ejecución de un script, la instalación de dependencias o el uso de una action predefinida del marketplace.
- Runner (Ejecutor): El servidor que ejecuta tu workflow. GitHub proporciona runners gratuitos (Ubuntu, Windows, macOS), o puedes ejecutar el tuyo propio.
Para proyectos .NET, usaremos actions predefinidas como actions/checkout (para clonar el repositorio) y actions/setup-dotnet (para instalar el SDK de .NET).
2. Configuración de un pipeline CI básico: Compilación y pruebas
Creemos nuestro primer workflow. Para ello, en la raíz del repositorio, crea la carpeta .github/workflows y dentro de ella el archivo dotnet-build.yml.
Este es el archivo YAML mínimo para compilar y probar un proyecto C#:
name: .NET Build and Test
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Especifica tu versión de .NET
- name: Restore dependencies run: dotnet restore
- name: Build run: dotnet build --no-restore --configuration Release
- name: Run tests run: dotnet test --no-build --configuration Release --verbosity normalAnalicemos el código:
- name: El nombre del workflow que se mostrará en GitHub.
- on: Define los triggers. En nuestro caso, push y pull request en las ramas main y develop.
- jobs: Contiene una tarea
build-and-testque se ejecuta enubuntu-latest. - steps: Secuencia de acciones: clonar el código, instalar .NET 8.0, restaurar paquetes NuGet, compilar en configuración Release y ejecutar las pruebas.
Después de hacer push de este archivo al repositorio, GitHub Actions ejecutará el workflow automáticamente. Verás una marca de verificación verde o una cruz roja junto