Complete "Elegir una plataforma de hosting: Cloud, VPS y Platform-as-a-Service" primero para desbloquear esta lección.Ir a la lección anterior

Por qué CI/CD es importante para apps generadas con IA

Cuando una herramienta de IA genera el código de tu aplicación, sigues necesitando una forma fiable de publicar actualizaciones sin romper producción. Un pipeline de CI/CD (Integración Continua / Despliegue Continuo) ejecuta verificaciones automatizadas y despliega tu código cada vez que haces push a un repositorio Git. En el caso de las apps generadas con IA, esto importa aún más porque el código puede cambiar rápidamente mientras iteras con prompts.

La idea es sencilla: cada push a tu repositorio dispara un workflow que compila tu app, ejecuta tests y despliega en tu plataforma de hosting (Vercel, Netlify, AWS, etc.) si todo pasa. Dejas de desplegar manualmente y de enviar código roto a los usuarios.

Qué es GitHub Actions

GitHub Actions es una herramienta de automatización integrada dentro de GitHub. Defines workflows en archivos YAML guardados en la carpeta `.github/workflows` de tu repo. Cada workflow se activa por un evento (como un push) y ejecuta una serie de pasos dentro de una máquina virtual.

Un archivo de workflow tiene tres partes principales: el trigger (cuándo se ejecuta), el runner (qué máquina se usa) y los jobs (qué hacer). Aquí tienes un ejemplo mínimo para una app en Node.js:

yaml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run build
- run: npm test

Este archivo vive en `.github/workflows/deploy.yml`. Cuando haces push a `main`, GitHub levanta una máquina Ubuntu, hace checkout de tu código, instala dependencias, compila el proyecto y ejecuta los tests.

Añadir despliegue automatizado

El job de build anterior solo verifica que tu código funcione. Para publicarlo realmente, añades un paso de deploy. La mayoría de proveedores de hosting modernos ofrecen actions prefabricadas que puedes usar directamente. Para Vercel:

yaml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run build
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'

Fíjate en las referencias a secrets. Los valores sensibles como tokens de API se guardan en la configuración del repositorio de GitHub, en Secrets and Environment variables, nunca directamente en el archivo del workflow. La sintaxis `${{ secrets.NAME }}` obtiene un secret en tiempo de ejecución sin exponerlo en los logs.

diagrama de flujo de CI/CD con los pasos: push code → trigger workflow → checkout code → install dependencies → run build → run tests → si pasa, desplegar a producción; si falla, detener y notificar

Manejo de particularidades del código generado por IA

El código generado por IA suele traer preocupaciones adicionales. La lista de dependencias puede estar inflada o incluir paquetes sin usar. El código puede funcionar en local pero fallar en una máquina limpia por faltar archivos de entorno. Aquí tienes pasos prácticos para endurecer tu pipeline:

Añade un paso de linting antes del build para detectar errores comunes temprano. Fija explícitamente la versión de Node.js o de tu runtime. Cachea las dependencias usando `actions/cache` para que las instalaciones repetidas sean rápidas. Las variables de entorno que tu app necesita en runtime, agrégalas también como secrets.

yaml
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- run: npm ci

Usa `npm ci` en lugar de `npm install` en entornos de CI. `ci` lee el lock file de forma estricta y genera instalaciones reproducibles, lo que detecta casos en los que tu `package.json` generado por IA se haya desincronizado del `package-lock.json`.

Errores frecuentes y soluciones

Un error habitual es hacer commit del archivo de workflow pero olvidar agregar los secrets en la configuración del repo. El workflow fallará con un error de "secret not found". Ve a Settings → Secrets and variables → Actions y añade cada uno.

Otro error habitual es desplegar con cada push, incluso los de ramas de feature. Usa el filtro `branches` dentro del bloque `on` para restringirlo solo a `main`, o añade un job separado de preview deployment para los pull requests.

Por último, ojo con los workflows que se ejecutan en pull requests desde forks. Estos no pueden acceder a secrets por defecto por motivos de seguridad. Si lo necesitas, usa `pull_request_target` con precaución, o apóyate en entornos de preview del plan gratuito que no requieren secrets.

Resumen

Un pipeline de CI/CD sólido para una app web generada con IA es simplemente un archivo YAML en tu repo que se ejecuta con cada push, instala dependencias de forma limpia, compila y testea, y luego despliega en tu host usando secretos almacenados. Empieza con un workflow básico de build y test, y añade el paso de deploy una vez tengas las credenciales de hosting. Trata el pipeline en sí mismo como infraestructura de producción, porque controla lo que llega a tus usuarios.

Práctica de la lección

Punto de control de la lección

Repasa lo aprendido y recibe comentarios sobre tu trabajo.

0/1
Respondidas · 0/1