Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 40s
- Agregado workflow de deployment automático (.gitea/workflows/deployment.yml) - Workflow configurado para runner 'production-ready' - Build y deploy automático con docker-compose_prod.yml - Verificación de estado post-despliegue - Documentación completa en CI-CD-README.md
5.1 KiB
5.1 KiB
🚀 CI/CD con Gitea Actions - Francia Ocupada
📋 Configuración Actual
Runner Configurado
- Nombre:
runner-01-ci-vm - Etiqueta:
production-ready:host - URL Gitea:
http://gitea.local:3000 - Estado: ✅ Corriendo sin problemas
Workflow Creado
- Ubicación:
.gitea/workflows/deployment.yml - Trigger: Push a
mainomaster, o ejecución manual - Acciones: Build y deploy automático con Docker Compose
🔄 Flujo de Despliegue
El workflow ejecuta los siguientes pasos:
- 🚀 Checkout del Código: Descarga el código del repositorio
- ⚙️ Configurar Node.js: Instala Node.js 20 para las acciones
- 🛑 Detener Contenedores Anteriores: Para y elimina los contenedores existentes
- 🧹 Limpiar Imágenes Antiguas: Elimina imágenes Docker sin usar
- 🔨 Construir Imágenes Docker: Construye las imágenes con
docker-compose_prod.yml - 📦 Desplegar Aplicación: Levanta los contenedores en modo producción
- ✅ Verificar Despliegue: Comprueba que los contenedores están corriendo
- 📋 Mostrar Logs Recientes: Muestra logs para debugging
🧪 Cómo Hacer Pruebas de Despliegue
Opción 1: Push a la rama principal (Automático)
# Hacer algún cambio en el código
echo "# Test CI/CD" >> README.md
# Commit y push
git add .
git commit -m "test: Prueba de CI/CD automático"
git push origin main # o master, según tu rama principal
Opción 2: Ejecución Manual desde Gitea
- Ve a tu repositorio en Gitea:
http://gitea.local:3000/[tu-usuario]/resistencia - Navega a la pestaña Actions
- Selecciona el workflow "CI/CD - Francia Ocupada (La Resistencia)"
- Haz clic en "Run workflow"
- Selecciona la rama y confirma
Opción 3: Forzar un push vacío (sin cambios)
# Esto dispara el workflow sin hacer cambios reales
git commit --allow-empty -m "test: Trigger CI/CD workflow"
git push origin main
📊 Monitorear el Despliegue
Desde Gitea Web UI
- Ve a Actions en tu repositorio
- Verás el workflow ejecutándose en tiempo real
- Haz clic en el workflow para ver los logs detallados de cada paso
Desde el Servidor (SSH)
# Ver estado de los contenedores
docker compose -f docker-compose_prod.yml ps
# Ver logs en tiempo real
docker compose -f docker-compose_prod.yml logs -f
# Ver logs de un servicio específico
docker compose -f docker-compose_prod.yml logs -f client
docker compose -f docker-compose_prod.yml logs -f server
docker compose -f docker-compose_prod.yml logs -f db
# Ver imágenes Docker
docker images | grep resistencia
🔧 Solución de Problemas
El workflow falla en el checkout
Problema: Error de autenticación con Gitea
Solución:
- Verifica que el token de registro del runner sea correcto
- Asegúrate de que el runner tenga acceso al repositorio
El workflow falla en la construcción
Problema: Error al construir las imágenes Docker
Solución:
# En el servidor, construir manualmente para ver el error
cd /ruta/al/proyecto
docker compose -f docker-compose_prod.yml build --no-cache
Los contenedores no inician
Problema: Los contenedores se detienen inmediatamente
Solución:
# Ver logs de error
docker compose -f docker-compose_prod.yml logs
# Verificar configuración
docker compose -f docker-compose_prod.yml config
Puerto ya en uso
Problema: Los puertos 3000, 4000 o 5432 están ocupados
Solución:
# Ver qué está usando los puertos
sudo lsof -i :3000
sudo lsof -i :4000
sudo lsof -i :5432
# Detener contenedores anteriores
docker compose -f docker-compose_prod.yml down
🎯 Verificación Post-Despliegue
Después de un despliegue exitoso, verifica:
-
Frontend accesible: https://franciaocupada.martivich.es
-
API accesible: https://api.franciaocupada.martivich.es
-
Contenedores corriendo:
docker compose -f docker-compose_prod.yml psDeberías ver 3 contenedores:
client,server,db -
Logs sin errores:
docker compose -f docker-compose_prod.yml logs --tail=100
📝 Notas Importantes
- Rama principal: El workflow se activa en push a
mainomaster - Etiqueta del runner: Debe ser
production-ready(configurada en tu runner) - Docker Compose: Usa
docker-compose_prod.ymlpara producción - Variables de entorno: Configuradas en
docker-compose_prod.yml:NEXT_PUBLIC_API_URL=https://api.franciaocupada.martivich.esCORS_ORIGIN=https://franciaocupada.martivich.es
🔐 Seguridad
- El workflow usa el token de Gitea automáticamente (
${{ gitea.token }}) - No es necesario configurar secrets adicionales para este workflow básico
- Si necesitas secrets (API keys, passwords), agrégalos en:
- Gitea → Repositorio → Settings → Secrets
🚀 Próximos Pasos Recomendados
- Pruebas automatizadas: Agregar tests antes del deploy
- Notificaciones: Configurar notificaciones de éxito/fallo
- Rollback automático: Implementar rollback si el deploy falla
- Health checks: Verificar que la app responde correctamente
- Backup de DB: Hacer backup antes de cada deploy