Lección 14 de 19 · Lectura y práctica
Quiz: Despliegues Automatizados
Tipo de lección: QuizConcepto claveLos despliegues automatizados a entornos cloud son el proceso de implementar aplicaciones en infraestructura remota sin intervención manual, usando GitHub Actions como orquestador. Imagina que.
Del concepto a la práctica
Taller de esta lección
Este repaso comprueba si puedes distinguir artefacto, entorno, estrategia y credencial. El artefacto es la salida transportable; el entorno es el destino; blue-green y canary controlan el cambio de tráfico; un secret protege una identidad o valor sensible. Un despliegue correcto también necesita una condición de entrada.
Ejemplo resuelto
Si el test falla y el deploy tiene needs sobre ese test, la respuesta correcta es no desplegar. En un despliegue externo, si el test pasa pero falta la identidad autorizada, el deploy también debe detenerse, sin sustituir el secret por un valor escrito en YAML.
Pruébalo
Lee una ejecución y localiza la última etapa verde.
Identifica si el fallo corresponde a calidad, autenticación o destino.
Explica qué evidencia permitiría reintentar de forma segura.
Comprueba si algún log expone configuración sensible.
Comprueba tu resultado
Error frecuente: llamar “rollback” a cualquier nueva ejecución. Corrección: distingue revertir tráfico de volver a ejecutar un deploy.
Ejercicio: analiza un canary con 1 error en 10 solicitudes. Resultado esperado: calculas 10%, aplicas el umbral definido y describes si se conserva la versión previa, sin recomendar desplegar a usuarios reales.

Mapa de prácticaEl código se empaqueta en una imagen y se prueba antes de publicarlo. Esa misma imagen se guarda en un registro y se usa en el despliegue. Comprobar la salud de las instancias permite detectar un fallo sin reconstruir el artefacto.
Ver la infografía en tamaño completo ↗Tipo de lección: Quiz
Concepto clave
Los despliegues automatizados a entornos cloud son el proceso de implementar aplicaciones en infraestructura remota sin intervención manual, usando GitHub Actions como orquestador. Imagina que eres un piloto de drones: defines la ruta (tu workflow), configuras los puntos de aterrizaje (entornos como staging o producción), y el dron ejecuta el vuelo automáticamente cada vez que hay un cambio en el código. Esto elimina errores humanos y acelera la entrega de valor.
En el contexto de CI/CD, esto significa que tras pasar los tests, tu aplicación se despliega directamente a servicios como AWS, Azure, o Google Cloud. La clave está en la integración segura: GitHub Actions usa secrets para almacenar credenciales de cloud (como claves de API) y los inyecta en el runtime, manteniendo tu infraestructura protegida. Es como tener un mensajero confiable que lleva paquetes sellados a destinos específicos, sin que nadie más pueda abrirlos.
Cómo funciona en la práctica
Veamos un ejemplo paso a paso para desplegar una app Node.js a AWS Elastic Beanstalk:
- Configuración inicial: Crea un repositorio en GitHub con tu código y un archivo
appspec.ymlpara AWS. - Secrets en GitHub: Ve a Settings → Secrets and variables → Actions, y añade
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEY. - Workflow de GitHub Actions: Crea un archivo
.github/workflows/deploy.ymlque defina el job de despliegue. - Ejecución automática: Al hacer push a la rama main, el workflow corre: build → test → deploy usando los secrets.
- Verificación: Revisa los logs en GitHub Actions y accede a tu app en la URL de AWS.
Este flujo asegura que cada cambio validado llegue a producción en minutos, no en horas.
Codigo en accion
Antes: Un despliegue manual con scripts locales propenso a errores.
# deploy-manual.sh (ejemplo viejo)
echo "Building..."
npm run build
echo "Uploading to AWS..."
aws s3 sync ./dist s3://my-bucket --profile my-profile
# Problema: depende de tu máquina y credenciales localesDespues: Un workflow de GitHub Actions automatizado y seguro.
# .github/workflows/deploy.yml
name: Deploy to AWS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Deploy to AWS Elastic Beanstalk
uses: einaregilsson/beanstalk-deploy@v21
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: my-app
environment_name: my-app-prod
region: us-east-1
version_label: ${{ github.sha }}
deployment_package: ./dist.zipErrores comunes
- Exponer secrets en logs: Nunca imprimas
${{ secrets.XXX }}con echo. GitHub los ofusca, pero errores en scripts pueden filtrarlos. Usarun: echo "Deploying..."sin detalles sensibles. - Falta de rollback automático: Si el despliegue falla, tu app puede quedar rota. Implementa health checks en el workflow y usa estrategias como blue-green en cloud para revertir.
- Despliegues a ramas incorrectas: Desplegar desde feature branches a producción causa inestabilidad. Configura
on: push: branches: [main]y usa entornos separados para staging. - Ignorar costos de cloud: Los workflows que corren frecuentemente pueden generar gastos altos. Optimiza con caching de dependencias y triggers precisos (ej., solo en tags).
- Permisos insuficientes en secrets: Si el job falla por acceso denegado, verifica que los secrets tengan los scopes correctos (ej., permisos de escritura en AWS).
Checklist de dominio
- Configuré secrets en GitHub para credenciales de cloud (ej., AWS, Azure).
- Mi workflow incluye steps para build, test y deploy en un solo job o jobs separados.
- Uso entornos en GitHub Actions para gestionar staging y producción con approvals.
- Implementé health checks post-deploy para verificar que la app este funcionando.
- Probé rollback manual o automático en caso de fallo en producción.
- Optimicé el tiempo de ejecución con caching de dependencias (ej., actions/cache).
- Documenté el proceso de despliegue en el README para el equipo.
Configura un despliegue automatizado a Google Cloud Run
En este ejercicio, vas a crear un workflow de GitHub Actions que despliegue una app contenerizada a Google Cloud Run. Sigue estos pasos:
- Prepara tu repositorio: Crea un repositorio en GitHub con un Dockerfile simple para una app web (puedes usar un ejemplo de Node.js o Python). Asegurate de que el Dockerfile construya correctamente localmente.
- Configura Google Cloud: En Google Cloud Console, crea un proyecto, habilita Cloud Run y Container Registry. Genera una clave de servicio JSON con permisos de Cloud Run Admin y Container Registry Writer.
- Añade secrets a GitHub: En tu repositorio, ve a Settings → Secrets and variables → Actions. Crea un secret llamado
GCP_SA_KEYy pega el contenido completo de la clave de servicio JSON. - Crea el workflow: En
.github/workflows/deploy.yml, define un job que:- Se ejecute en push a main.
- Haga checkout del código.
- Construya la imagen Docker y la suba a Google Container Registry usando el secret.
- Despliegue a Cloud Run con un nombre de servicio y región.
- Prueba el despliegue: Haz un push a main y verifica en GitHub Actions que el job termine exitosamente. Accede a la URL generada por Cloud Run para ver tu app.
Entrega: Comparte el enlace a tu repositorio y una captura del workflow exitoso.
Pistas
- Usa la accion oficial google-github-actions/deploy-cloudrun para simplificar el despliegue.
- Asegurate de que el Dockerfile exponga el puerto correcto (ej., 8080 para Cloud Run).
- Verifica que el secret GCP_SA_KEY este en formato JSON valido, sin saltos de linea extra.
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con GitHub Actions para CI/CD: Automatización de Builds, Tests y Deploys
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.