name: Despliegue Automatizado Universal on: push: branches: - develop - master jobs: 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 id: setup run: | # 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 == 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 sección en /etc/apps.conf para el repositorio $REPO_NAME con el sufijo correcto." exit 1 fi # 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" echo "app=${TARGET_APP}" >> $GITHUB_OUTPUT echo "version=${MAJOR_VERSION}" >> $GITHUB_OUTPUT build: needs: get-context runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Configurar Node.js dinámicamente uses: actions/setup-node@v4 with: node-version: ${{ needs.get-context.outputs.node_version }} - run: npm ci - run: npm run build deploy: needs: [get-context, build] runs-on: host steps: - name: Ejecutar Despliegue en Servidor Físico run: | TARGET_APP="${{ needs.get-context.outputs.target_app }}" BRANCH_NAME="${{ github.ref_name }}" sudo -u deploy /home/deploy/scripts/deploy-front.sh "$TARGET_APP" "$BRANCH_NAME"