Files
seguidorDeLotes/.gitea/workflows/build-and-deploy.yml
josedario87 7c8ba38e04
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 16s
Forzar recreación de BD eliminando volumen en deploy
Esto reinicializará la BD con los scripts corregidos.
Una vez verificado, se puede remover esta línea temporal.
2025-11-21 19:12:00 -06:00

65 lines
2.6 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: build-and-deploy
on:
push:
branches: [ main, master ]
jobs:
build-and-deploy:
runs-on: docker
env:
REG: ${{ vars.REGISTRY_URL }}
REPO_OWNER: ${{ github.repository_owner }}
APP_NAME: ${{ vars.APP_NAME }}
APP_DOMAIN: ${{ vars.APP_DOMAIN }}
NUXT_PUBLIC_APP_URL: ${{ vars.NUXT_PUBLIC_APP_URL }}
# PostgreSQL
POSTGRES_USER: ${{ vars.POSTGRES_USER || 'seguidor' }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD || 'seguidor_password' }}
POSTGRES_DB: ${{ vars.POSTGRES_DB || 'seguidor_lotes' }}
steps:
- uses: actions/checkout@v3
- name: Build, push and deploy
run: |
# Login to registry
docker login $REG -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }}
# Build and push
echo "🔨 Building image..."
cd nuxt4
docker build -t $REG/$REPO_OWNER/$APP_NAME:${{ github.sha }} -t $REG/$REPO_OWNER/$APP_NAME:latest .
echo "📤 Pushing images..."
docker push $REG/$REPO_OWNER/$APP_NAME:${{ github.sha }}
docker push $REG/$REPO_OWNER/$APP_NAME:latest
# Deploy
cd ..
echo " Deploying $APP_NAME"
echo " Domain: $APP_DOMAIN"
echo " Image: $REG/$REPO_OWNER/$APP_NAME:latest"
# Limpiar despliegue anterior si existe (nombre viejo)
docker compose --project-name seguidor-de-lotes down -v 2>/dev/null || true
# Forzar recreación de BD eliminando el volumen (temporal para fix)
echo "🗑️ Eliminando volumen de PostgreSQL para reinicialización..."
docker compose --project-name $APP_NAME down -v
docker compose pull
docker compose --project-name $APP_NAME up -d --remove-orphans --wait
# Inicializar base de datos si es necesario
echo "🗄️ Inicializando base de datos..."
# Verificar si las tablas existen
TABLE_EXISTS=$(docker exec $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'lotes');")
if [ "$TABLE_EXISTS" = "f" ]; then
echo "📝 Ejecutando scripts de inicialización..."
docker exec -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/01_schema.sql
docker exec -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/02_seed.sql
echo "✅ Base de datos inicializada"
else
echo " Base de datos ya inicializada"
fi