Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
95 lines
2.9 KiB
Bash
Executable File
95 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de deployment para Francia Ocupada
|
|
# Este script se ejecuta en el HOST, no en el runner
|
|
|
|
set -e # Salir si hay algún error
|
|
|
|
echo "🚀 Iniciando deployment de Francia Ocupada..."
|
|
echo "================================================"
|
|
|
|
# Directorio del proyecto
|
|
PROJECT_DIR="/home/marti/docker/FranciaOcupada"
|
|
cd "$PROJECT_DIR"
|
|
|
|
echo "📂 Directorio de trabajo: $(pwd)"
|
|
echo ""
|
|
|
|
# PASO 1: Actualizar código desde Git
|
|
echo "📥 PASO 1: Actualizando código desde Git..."
|
|
git fetch origin
|
|
git reset --hard origin/main
|
|
echo "✅ Código actualizado"
|
|
echo ""
|
|
|
|
# PASO 2: Detener contenedores anteriores
|
|
echo "🛑 PASO 2: Deteniendo contenedores anteriores..."
|
|
docker compose -f docker-compose_prod.yml down || true
|
|
docker container prune -f || true
|
|
echo "✅ Contenedores anteriores detenidos"
|
|
echo ""
|
|
|
|
# PASO 3: Limpiar imágenes antiguas
|
|
echo "🧹 PASO 3: Limpiando imágenes antiguas..."
|
|
docker image prune -f || true
|
|
echo "✅ Limpieza completada"
|
|
echo ""
|
|
|
|
# PASO 4: Construir imágenes Docker
|
|
echo "🔨 PASO 4: Construyendo imágenes Docker..."
|
|
docker compose -f docker-compose_prod.yml build --no-cache
|
|
|
|
# Etiquetar con timestamp para trazabilidad
|
|
TAG_VERSION=$(date +%Y%m%d_%H%M%S)
|
|
docker tag resistencia-client:latest resistencia-client:${TAG_VERSION} || true
|
|
docker tag resistencia-server:latest resistencia-server:${TAG_VERSION} || true
|
|
|
|
echo "✅ Imágenes construidas:"
|
|
echo " - resistencia-client:latest (${TAG_VERSION})"
|
|
echo " - resistencia-server:latest (${TAG_VERSION})"
|
|
echo ""
|
|
|
|
# PASO 5: Desplegar contenedores
|
|
echo "📦 PASO 5: Desplegando aplicación..."
|
|
docker compose -f docker-compose_prod.yml up -d
|
|
|
|
echo "✅ Aplicación desplegada exitosamente"
|
|
echo ""
|
|
|
|
# PASO 6: Verificar deployment
|
|
echo "✅ PASO 6: Verificando deployment..."
|
|
sleep 10
|
|
|
|
echo "📊 Estado de los contenedores:"
|
|
docker compose -f docker-compose_prod.yml ps
|
|
echo ""
|
|
|
|
# Verificar que los contenedores están corriendo
|
|
RUNNING_CONTAINERS=$(docker compose -f docker-compose_prod.yml ps -q | wc -l)
|
|
if [ "$RUNNING_CONTAINERS" -eq 0 ]; then
|
|
echo "❌ ERROR: No hay contenedores corriendo"
|
|
docker compose -f docker-compose_prod.yml logs
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Verificación completada - $RUNNING_CONTAINERS contenedores corriendo"
|
|
echo ""
|
|
|
|
# PASO 7: Mostrar logs recientes
|
|
echo "📋 PASO 7: Logs recientes..."
|
|
echo ""
|
|
echo "--- Logs del Cliente (últimas 20 líneas) ---"
|
|
docker compose -f docker-compose_prod.yml logs --tail=20 client || true
|
|
echo ""
|
|
echo "--- Logs del Servidor (últimas 20 líneas) ---"
|
|
docker compose -f docker-compose_prod.yml logs --tail=20 server || true
|
|
echo ""
|
|
|
|
echo "================================================"
|
|
echo "🎉 Deployment completado exitosamente!"
|
|
echo ""
|
|
echo "🌐 Aplicación disponible en:"
|
|
echo " - Frontend: https://franciaocupada.martivich.es"
|
|
echo " - API: https://api.franciaocupada.martivich.es"
|
|
echo "================================================"
|