From b0759bcf5c070616b44d4e9c2d8a05e23f8c7a02 Mon Sep 17 00:00:00 2001 From: dscadmin Date: Thu, 2 Jul 2026 02:19:27 -0600 Subject: [PATCH] Fix: Buscar aplicacion por nombre de repositorio REPO en apps.conf --- .gitea/workflows/deploy.yaml | 54 +++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 32ed5d4..53e96be 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -7,50 +7,58 @@ on: - master jobs: - # 1. PASO INTELIGENTE: Obtiene el contexto y lee apps.conf usando la ruta actual get-context: runs-on: host outputs: node_version: ${{ steps.setup.outputs.version }} target_app: ${{ steps.setup.outputs.app }} steps: - - name: Resolver Aplicación desde apps.conf por Ruta + - name: Resolver Aplicación desde apps.conf id: setup run: | - # 1. Obtener la ruta absoluta donde está clonado este proyecto en el runner (ej: /var/www/html/front/pruebas/presupuesto) - CURRENT_PATH=$(pwd) - - echo "Buscando qué sección de apps.conf coincide con la ruta: $CURRENT_PATH" - - # 2. Buscar en apps.conf el bloque que tenga exactamente ese APP_PATH - # Usamos awk para encontrar el bloque [nombre] asociado a esa ruta - TARGET_APP=$(awk -v path="$CURRENT_PATH" ' + # 1. Obtener el nombre del repositorio actual en Gitea (ej: front-Censo) + REPO_NAME="${{ github.event.repository.name }}" + + # 2. Determinar si buscamos un entorno -dev (develop) o producción (master) + if [ "${{ github.ref_name }}" = "develop" ]; then + SUFFIX="-dev" + else + SUFFIX="" + fi + + echo "Buscando qué sección de apps.conf tiene REPO=$REPO_NAME y termina en '$SUFFIX'..." + + # 3. Buscar en /etc/apps.conf el bloque que contenga REPO=nombre_del_repo + TARGET_APP=$(awk -v repo="REPO=$REPO_NAME" -v suf="$SUFFIX" ' /^\[/ { gsub(/[\[\]]/, "", $0); current_box=$0; next } - $0 ~ "^APP_PATH="path"$" { print current_box; exit } + $0 == repo { + if ((suf == "-dev" && current_box ~ /-dev$/) || (suf == "" && current_box !~ /-dev$/)) { + print current_box; + exit + } + } ' /etc/apps.conf) - + if [ -z "$TARGET_APP" ]; then - echo "ERROR: No se encontró ninguna aplicación en apps.conf que coincida con la ruta $CURRENT_PATH" + echo "ERROR: No se encontró ninguna sección en /etc/apps.conf para el repositorio $REPO_NAME con el sufijo correcto." exit 1 fi - - # 3. Una vez que sabemos el nombre del bloque (ej: presupuesto-dev), leemos su versión de Node + + # 4. Leer la versión de Node del bloque encontrado VERSION=$(awk -v app="$TARGET_APP" ' $0=="["app"]" { found=1; next } /^\[/ && found { exit } found && /^NODE=/ { split($0, a, "="); print a[2]; exit } ' /etc/apps.conf) - + MAJOR_VERSION=$(echo "$VERSION" | tr -d '[:space:]' | grep -oE '[0-9]+' | head -n1) - + echo "-> ID de Aplicación encontrado: $TARGET_APP" echo "-> Versión Mayor de Node resuelta: $MAJOR_VERSION" - - # Exportar variables para los siguientes pasos + echo "app=${TARGET_APP}" >> $GITHUB_OUTPUT echo "version=${MAJOR_VERSION}" >> $GITHUB_OUTPUT - # 2. PASO DE COMPILACIÓN: Se ejecuta seguro en Docker con la versión correcta build: needs: get-context runs-on: ubuntu-latest @@ -65,7 +73,6 @@ jobs: - run: npm ci - run: npm run build - # 3. PASO DE DESPLIEGUE: Invoca tu script enviando el ID dinámico deploy: needs: [get-context, build] runs-on: host @@ -74,8 +81,5 @@ jobs: run: | TARGET_APP="${{ needs.get-context.outputs.target_app }}" BRANCH_NAME="${{ github.ref_name }}" - - echo "Iniciando script de despliegue para el identificador: $TARGET_APP" - - # Llama a tu script pasándole el ID que descubrimos en el primer paso + sudo -u deploy /home/deploy/scripts/deploy-front.sh "$TARGET_APP" "$BRANCH_NAME"