Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
- 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
94 lines
3.2 KiB
YAML
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"
|