Files
FranciaOcupada/.gitea/workflows/deployment.yml
Resistencia Dev fd23cae2ff
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
refactor: Simplificar CI/CD usando script de deployment en el host
- Creado deploy.sh que se ejecuta directamente en el host
- Simplificado workflow para ejecutar el script en lugar de comandos inline
- El script maneja todo: git pull, docker build, docker deploy
- Evita problemas de 'docker: command not found' en el runner
- El runner solo necesita Node.js para checkout, luego ejecuta el script del host
2025-12-13 15:50:48 +01:00

94 lines
3.2 KiB
YAML

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..."
# Copiar archivos al directorio del proyecto en el host
# El runner ya tiene el código en su workspace
WORKSPACE_DIR=$(pwd)
PROJECT_DIR="/home/marti/Documentos/Gitea/resistencia"
echo "📂 Workspace del runner: $WORKSPACE_DIR"
echo "📂 Directorio del proyecto: $PROJECT_DIR"
# Copiar el código actualizado al directorio del proyecto
# (esto asume que el runner tiene acceso al filesystem del host)
if [ "$WORKSPACE_DIR" != "$PROJECT_DIR" ]; then
echo "📋 Copiando archivos actualizados..."
rsync -av --exclude='.git' --exclude='node_modules' "$WORKSPACE_DIR/" "$PROJECT_DIR/" || \
cp -r "$WORKSPACE_DIR/"* "$PROJECT_DIR/" || \
echo "⚠️ No se pudo copiar, asumiendo que ya estamos en el directorio correcto"
fi
# Ejecutar el script de deployment
cd "$PROJECT_DIR"
chmod +x deploy.sh
./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"