quenda-chatbot v1.0.50
Minerva Plexusdx
Minerva Plexus es un proyecto diseñado para proporcionar una interfaz de usuario interactiva y dinámica para trabajar con la API de OpenAI. Está construida utilizando Vite para un desarrollo rápido y TypeScript para tipado estático. La aplicación sigue una arquitectura hexagonal y está configurada para ser fácilmente dockerizable.
Tabla de Contenidos
- Requisitos Previos
- Instalación
- Configuración
- Ejecución del Proyecto
- Pruebas
- Análisis de Calidad de Código
- Despliegue
- Mantenimiento
- Contribuir
- Licencia
Requisitos Previos
Antes de iniciar, asegúrate de tener instalados los siguientes programas en tu entorno de desarrollo:
- Node.js: Recomendado usar la versión LTS más reciente.
- npm (incluido con Node.js) o Yarn para la gestión de paquetes.
- Java JDK 17: Necesario para ejecutar SonarQube.
- SonarQube: Para análisis de calidad de código.
- SonarScanner: Para enviar los resultados del análisis a SonarQube.
Instalación
Clona el repositorio:
git clone https://github.com/tu-usuario/minerva-plexus.git cd minerva-plexus
Instala las dependencias del proyecto:
Usando npm:
npm install
O usando Yarn:
yarn install
Instala Java JDK 17 (si no lo has hecho):
Usando Homebrew:
brew install openjdk@17
Configura la variable de entorno JAVA_HOME:
Agrega lo siguiente a tu archivo
~/.zshrc
o~/.bash_profile
:export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" export PATH="$JAVA_HOME/bin:$PATH"
Luego, recarga el archivo de configuración del shell:
source ~/.zshrc
Instala y configura SonarQube:
Descarga SonarQube desde la página oficial, extrae el archivo y sigue las instrucciones de la sección de SonarQube en este documento para iniciar el servidor.
Instala SonarScanner:
brew install sonar-scanner
Configuración
Configuración del archivo
sonar-project.properties
:En el directorio raíz del proyecto, asegúrate de que exista un archivo
sonar-project.properties
con el siguiente contenido:sonar.projectKey=minerva-plexus sonar.projectName=Minerva Plexus sonar.projectVersion=1.0 sonar.sources=src sonar.tests=src sonar.test.inclusions=**/*.test.ts,**/*.test.tsx sonar.typescript.lcov.reportPaths=coverage/lcov.info sonar.host.url=http://localhost:9000
Configurar variables de entorno:
Crea 2 archivos
.env
y.env.dev
en el directorio raíz del proyecto para las variables de entorno específicas del entorno de desarrollo y producción. Ejemplo:VITE_API_URL=http://vm-cv-chatbot.westeurope.cloudapp.azure.com:8311 VITE_API_KEY=ai VITE_PORT=8612 NODE_ENV=production/development VITE_BASE_URL=http://localhost:8612/
Ejecución del Proyecto
Iniciar la aplicación en modo desarrollo:
Usando npm:
npm start
Usando Yarn:
yarn start
La aplicación estará disponible en
http://localhost:8612
.
Pruebas
Ejecutar pruebas unitarias:
Usando npm:
npm test -- --coverage
Usando Yarn:
yarn test --coverage
Generar un informe de cobertura de código:
Asegúrate de que la opción
--coverage
esté activada al ejecutar las pruebas para generar un informe de cobertura que se puede enviar a SonarQube.
Análisis de Calidad de Código
Ejecutar análisis de SonarQube:
Ejecuta SonarScanner para analizar el proyecto:
sonar-scanner
Esto enviará los resultados del análisis a tu instancia de SonarQube en
http://localhost:9000
.Configurar Quality Gates:
En la interfaz de SonarQube, ajusta las condiciones de cobertura de código en los Quality Gates para cumplir con los estándares de calidad.
Despliegue
Compilar la aplicación para producción:
Usando npm:
npm run build
Usando Yarn:
yarn build
Los archivos compilados estarán en el directorio
build/
y estarán listos para ser desplegados en un servidor web.
Mantenimiento
- Mantén las dependencias actualizadas: Revisa regularmente las dependencias del proyecto para aplicar actualizaciones de seguridad y mejoras.
- Monitorea los logs de SonarQube: Asegúrate de que SonarQube esté funcionando correctamente revisando los logs en el directorio
logs/
de SonarQube.
Aplicar SonarQube
Configuración e Instalación de SonarQube y SonarScanner en macOS
Este documento proporciona una guía paso a paso para instalar y ejecutar SonarQube y SonarScanner en macOS, incluyendo la configuración de Java y otros componentes necesarios.
Prerrequisitos
- macOS
- Homebrew (gestor de paquetes para macOS)
- Conexión a Internet
1. Instalación de Java
SonarQube requiere Java para funcionar. Usaremos Homebrew para instalar OpenJDK 17, que es la versión compatible con SonarQube.
Instalar OpenJDK 17:
brew install openjdk@17
Configurar JAVA_HOME:
Después de instalar, asegúrate de configurar
JAVA_HOME
para apuntar a OpenJDK 17. Agrega las siguientes líneas a tu archivo~/.zshrc
o~/.bash_profile
:export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" export PATH="$JAVA_HOME/bin:$PATH"
Luego, recarga el archivo de configuración del shell:
source ~/.zshrc
Verificar la instalación de Java:
java -version
Deberías ver algo similar a
openjdk version "17.0.x"
.
2. Descarga e Instalación de SonarQube
Descargar SonarQube:
Descarga la versión más reciente de SonarQube Community Edition desde la página oficial de SonarQube.
Extraer el archivo:
Una vez descargado, extrae el archivo en un directorio de tu elección, por ejemplo:
cd ~/Documents unzip sonarqube-x.y.z.zip
Navegar al directorio de SonarQube:
cd sonarqube-x.y.z/bin/macosx-universal-64
Iniciar SonarQube:
./sonar.sh start
Verás mensajes indicando que SonarQube ha sido iniciado. Puedes verificar el estado con:
./sonar.sh status
Acceder a SonarQube:
Abre un navegador y navega a
http://localhost:9000
. Deberías ver la interfaz de SonarQube. Por defecto, las credenciales de inicio de sesión son:- Usuario: admin
- Contraseña: admin
3. Instalación de SonarScanner
Instalar SonarScanner:
Usaremos Homebrew para instalar SonarScanner:
brew install sonar-scanner
Verificar la instalación:
sonar-scanner --version
Deberías ver la versión de SonarScanner instalada.
4. Configuración del Proyecto con SonarQube
Crear un archivo de configuración para SonarScanner:
En el directorio raíz de tu proyecto, crea un archivo llamado
sonar-project.properties
con el siguiente contenido:sonar.projectKey=minerva-plexus sonar.projectName=Minerva Plexus sonar.projectVersion=1.0 sonar.sources=src sonar.tests=src sonar.test.inclusions=**/*.test.ts,**/*.test.tsx sonar.typescript.lcov.reportPaths=coverage/lcov.info sonar.host.url=http://localhost:9000
Asegúrate de ajustar las rutas y nombres según la estructura de tu proyecto.
Ejecutar SonarScanner:
sonar-scanner
Esto iniciará un análisis de tu proyecto y enviará los resultados a SonarQube.
5. Configuración de Calidad en SonarQube
Establecer Quality Gates:
- En la interfaz de SonarQube, ve a Quality Gates y selecciona o crea uno nuevo.
- Agrega condiciones para el mínimo de cobertura de código (por ejemplo, Cobertura > 80%).
Asignar Quality Gate al Proyecto:
- Navega a la configuración del proyecto en SonarQube.
- Asigna el Quality Gate que has configurado.
6. Solución de Problemas Comunes
Problemas con la Cobertura de Código:
Asegúrate de que SonarScanner esté leyendo correctamente el archivo de cobertura de pruebas (
lcov.info
). Verifica que la ruta especificada ensonar-project.properties
sea correcta.Errores de SCM:
Si ves un error de detección automática del proveedor de SCM, añade lo siguiente a tu
sonar-project.properties
:sonar.scm.provider=git
Advertencias de sonar.login:
Si usas autenticación por token, reemplaza sonar.login con sonar.token en tu configuración.
7. Actualizaciones y Mantenimiento
Mantén SonarQube y SonarScanner actualizados para aprovechar las últimas mejoras y correcciones de seguridad. Revisa los logs de SonarQube en caso de problemas. Los logs están ubicados en el directorio logs dentro del directorio de instalación de SonarQube.
Gitlab problems
git checkout main
git merge develop
INstalla Minerva Library:
Crear .npmrc en la raíz del proyecto y añadir al archivo:
@building_blocks:registry=https://repo.plexus.services/api/v4/projects/2724/packages/npm/
//repo.plexus.services/api/v4/projects/2724/packages/npm/:_authToken=<TU TOKEN DE ACCESO GITLAB>
Aplicación MInerva a apps de terceros
Para usar la característica de crear conversación en cada login sin tener listado de conversaciones, se puede usar el valor true en el hook/useAutoCreateConversation.ts
enableAutoCreate: boolean = false //habilitamos la funcionalidad crear conversacion on login
Ocultar además el componente ChatListConversations.
DOCKER REMOTO
docker compose up --force-recreate --build
docker system prune //limpiar si es extremadamente necesario
Despliegue kubernetes
Documentación en Kubernetes - Tutoriales y herramientas
resultado: kubectl get pods kubectl logs quenda-frontend-65f4fbf45f-gx7jq
docker build --platform linux/amd64 --no-cache -t quenda-frontend:latest . docker tag quenda-frontend:latest cminerva.azurecr.io/quenda-frontend:latest docker push cminerva.azurecr.io/quenda-frontend:latest kubectl apply -f quenda-frontend-deployment.yaml kubectl apply -f quenda-frontend-service.yaml
kubectl delete pod -l app=quenda-frontend
IMPORTANTE
construir con
NODE_ENV=production yarn build
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago