From 17acb358d994a4455a937eeeac145d034d030b10 Mon Sep 17 00:00:00 2001 From: dscadmin Date: Thu, 6 Aug 2026 06:01:32 -0600 Subject: [PATCH] Estandarizar AT y automatizar despliegue --- .gitea/workflows/ci.yaml | 50 +++++++++++++++++++++ .gitea/workflows/deploy.yaml | 85 ------------------------------------ .nvmrc | 1 + ecosystem.config.cjs | 25 +++++++++++ package-lock.json | 4 ++ package.json | 7 ++- 6 files changed, 86 insertions(+), 86 deletions(-) create mode 100644 .gitea/workflows/ci.yaml delete mode 100644 .gitea/workflows/deploy.yaml create mode 100644 .nvmrc create mode 100644 ecosystem.config.cjs diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..d46faa2 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,50 @@ +name: Validar AT + +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +jobs: + validate: + runs-on: ubuntu-latest + + steps: + - name: Obtener código + uses: https://github.com/actions/checkout@v4 + + - name: Configurar Node.js + uses: https://github.com/actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: npm + + - name: Mostrar versiones + run: | + node --version + npm --version + + - name: Instalar dependencias + run: npm ci + + - name: Build obligatorio + run: npm run build + + deploy-dev: + needs: validate + if: github.event_name == 'push' && github.ref_name == 'develop' + runs-on: ubuntu-latest + + steps: + - name: Desplegar AT en pruebas + uses: CIDWA/infra-actions/deploy-ssh@main + with: + ssh-private-key: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }} + known-hosts: ${{ secrets.DEPLOY_KNOWN_HOSTS }} + host: 10.10.10.11 + user: deploy + deploy-script: /var/deploy/scripts/deploy-node-app.sh at-dev + commit-sha: ${{ github.sha }} diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml deleted file mode 100644 index d1a3c87..0000000 --- a/.gitea/workflows/deploy.yaml +++ /dev/null @@ -1,85 +0,0 @@ -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" diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..5767036 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.21.1 diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs new file mode 100644 index 0000000..6809a6f --- /dev/null +++ b/ecosystem.config.cjs @@ -0,0 +1,25 @@ +module.exports = { + apps: [ + { + name: "at-dev", + cwd: "/var/www/html/front/pruebas/at", + script: "node_modules/next/dist/bin/next", + args: "start", + + interpreter: "/home/deploy/.nvm/versions/node/v22.21.1/bin/node", + + env: { + NODE_ENV: "production", + PORT: 3356, + HOSTNAME: "0.0.0.0", + }, + + autorestart: true, + watch: false, + min_uptime: "10s", + max_restarts: 10, + restart_delay: 3000, + time: true, + }, + ], +}; diff --git a/package-lock.json b/package-lock.json index d387462..5ae8bc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,10 @@ "@types/react-dom": "^19", "sass-embedded": "^1.97.3", "typescript": "^5" + }, + "engines": { + "node": "22.21.1", + "npm": "10.9.4" } }, "node_modules/@bufbuild/protobuf": { diff --git a/package.json b/package.json index e358997..7e8d530 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,10 @@ "@types/react-dom": "^19", "sass-embedded": "^1.97.3", "typescript": "^5" - } + }, + "engines": { + "node": "22.21.1", + "npm": "10.9.4" + }, + "packageManager": "npm@10.9.4" }