La integración continua (CI) y la entrega continua (CD) son pilares fundamentales en el desarrollo de software moderno. GitHub Actions proporciona una solución poderosa y flexible para automatizar procesos de CI/CD directamente en repositorios de GitHub. En este artículo, aprenderemos a configurar CI/CD para un proyecto Angular utilizando GitHub Actions.
1. Introducción a CI/CD y GitHub Actions Link to heading
¿Qué es CI/CD? Link to heading
- CI (Integración Continua): Automatiza la verificación del código mediante pruebas y validaciones cada vez que se realiza un cambio en el repositorio.
- CD (Entrega Continua): Automatiza el proceso de despliegue del código a entornos de producción o pruebas.
Ventajas de GitHub Actions Link to heading
- Integración nativa con repositorios de GitHub.
- Flexibilidad para definir pipelines personalizados.
- Amplio ecosistema de acciones reutilizables.
- Historial detallado de ejecuciones y logs.
2. Configuración inicial del proyecto Angular Link to heading
Crear un proyecto Angular: Si no tienes un proyecto Angular, puedes crear uno nuevo:
ng new angular-ci-cd-example cd angular-ci-cd-example
Subir el proyecto a GitHub: Inicializa un repositorio y empuja el proyecto:
git init git remote add origin <tu-repositorio> git add . git commit -m "Initial commit" git push -u origin main
3. Creación del workflow de CI Link to heading
Estructura básica del workflow Link to heading
GitHub Actions utiliza un archivo YAML ubicado en .github/workflows
. Crearemos un archivo llamado ci.yml
:
name: CI for Angular
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Run tests
run: npm test
Explicación del workflow Link to heading
- Eventos de disparo: Ejecuta el workflow en cada
push
opull_request
hacia la ramamain
. - Jobs: El trabajo
build-and-test
incluye:- actions/checkout: Descarga el código del repositorio.
- actions/setup-node: Configura Node.js en la máquina.
- npm ci: Instala las dependencias de forma limpia.
- npm run lint: Ejecuta la verificación de estilo de código.
- npm test: Ejecuta pruebas unitarias.
4. Configuración del workflow de CD Link to heading
Despliegue en GitHub Pages Link to heading
Si deseas publicar tu aplicación Angular en GitHub Pages, sigue estos pasos:
Configurar el archivo
angular.json
: Asegúrate de que la propiedadoutputPath
debuild
esté configurada correctamente:"outputPath": "dist/angular-ci-cd-example"
Agregar el workflow de despliegue: Crea un archivo
.github/workflows/cd-gh-pages.yml
:name: Deploy to GitHub Pages on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Install dependencies run: npm ci - name: Build project run: npm run build -- --output-path=dist - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist/angular-ci-cd-example
Habilitar GitHub Pages:
- Ve a la configuración de tu repositorio en GitHub.
- Activa GitHub Pages y selecciona la rama
gh-pages
como fuente.
Despliegue en un servidor externo Link to heading
Si prefieres desplegar en un servidor externo, como AWS o Azure, puedes agregar un paso adicional al workflow.
Ejemplo para FTP:
- name: Deploy to FTP server
uses: sebastianpopp/ftp-action@v2
with:
host: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./dist/angular-ci-cd-example
remote-dir: /var/www/html
5. Buenas prácticas en CI/CD para Angular Link to heading
- Usar
npm ci
en lugar denpm install
: Garantiza una instalación consistente de dependencias. - Configurar pruebas end-to-end (E2E): Agrega un paso para ejecutar pruebas E2E utilizando herramientas como Cypress o Protractor.
- Separar workflows: Divide CI y CD en archivos separados para mayor claridad.
- Utilizar secretos de GitHub: Almacena credenciales sensibles en
Secrets
para mantener la seguridad. - Monitorear el rendimiento: Usa herramientas de seguimiento como Lighthouse para verificar el impacto de los cambios.
6. Conclusión Link to heading
Configurar CI/CD para proyectos Angular con GitHub Actions mejora la eficiencia del desarrollo y asegura entregas rápidas y confiables. Desde la ejecución de pruebas hasta el despliegue automatizado en GitHub Pages o servidores externos, GitHub Actions simplifica el proceso y permite un flujo de trabajo profesional y moderno. ¡Empieza a automatizar hoy mismo y lleva tu proyecto Angular al siguiente nivel!