# CI: ejecuta la suite rápida de pruebas (offline) y el build en cada push y PR. # La suite de integración con Nominatim (red real) es opt-in: se lanza a mano # desde la pestaña Actions del repositorio, y un fallo de red no rompe el CI. name: tests on: push: pull_request: workflow_dispatch: jobs: test: name: Unitarias + componente + build # El runner disponible es self-hosted (AlmaLinux, Node 20 del sistema); # las deps soportan Node >=18/20 (jsdom@26), así que no hace falta setup-node. runs-on: self-hosted steps: - uses: actions/checkout@v4 - name: Instalar dependencias # better-sqlite3 (v12) requiere C++20 y el GCC 8 base de AlmaLinux 8 # no lo soporta: se activa gcc-toolset-12 igual que en deploy.yml shell: bash run: | source /opt/rh/gcc-toolset-12/enable 2>/dev/null || echo "WARN: gcc-toolset-12 no encontrado" npm ci - name: Pruebas unitarias y de componente (offline) run: npm test - name: Build de producción run: npm run build integracion: name: Integración (Nominatim real, opt-in) runs-on: self-hosted if: github.event_name == 'workflow_dispatch' continue-on-error: true # depende de un servicio externo: informativa steps: - uses: actions/checkout@v4 - name: Instalar dependencias shell: bash run: | source /opt/rh/gcc-toolset-12/enable 2>/dev/null || echo "WARN: gcc-toolset-12 no encontrado" npm ci - name: Pruebas de integración (API en memoria + Nominatim) run: npm run test:integration