name: CI/CD - Francia Ocupada (La Resistencia) run-name: Build & Deploy por ${{ gitea.actor }} on: push: branches: - main - master workflow_dispatch: permissions: contents: read jobs: build-and-deploy: runs-on: [production-ready] steps: # PASO 1: Instalar Node.js (requerido por las acciones de GitHub) - name: 📦 Instalar Node.js shell: bash run: | echo "Verificando si Node.js está instalado..." if ! command -v node &> /dev/null; then echo "Node.js no encontrado, instalando..." if [ -f /etc/debian_version ]; then curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs elif [ -f /etc/alpine-release ]; then apk add --no-cache nodejs npm else curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install 20 fi else echo "Node.js ya está instalado: $(node --version)" fi node --version npm --version # PASO 2: Checkout del Código - name: 🚀 Checkout del Código uses: actions/checkout@v4 with: fetch-depth: 0 # PASO 3: Ejecutar script de deployment en el host - name: 🎯 Ejecutar Deployment shell: bash run: | echo "🚀 Ejecutando script de deployment en el host..." PROJECT_DIR="/home/marti/Documentos/Gitea/resistencia" echo "📂 Directorio del proyecto: $PROJECT_DIR" # Ir al directorio del proyecto y ejecutar deployment cd "$PROJECT_DIR" # Asegurarse de que el script es ejecutable chmod +x deploy.sh # Ejecutar el script de deployment # El script hará git pull para obtener los últimos cambios ./deploy.sh # PASO 4: Verificación Final - name: ✅ Verificación Final if: always() shell: bash run: | PROJECT_DIR="/home/marti/Documentos/Gitea/resistencia" cd "$PROJECT_DIR" echo "📊 Estado final de los contenedores:" docker compose -f docker-compose_prod.yml ps || echo "No se pudo verificar el estado" echo "" echo "🌐 URLs de la aplicación:" echo " - Frontend: https://franciaocupada.martivich.es" echo " - API: https://api.franciaocupada.martivich.es"