Este proyecto está hecho de dos componentes:
| Dependencia | Requisito de la versión |
|---|---|
| Java | 17 |
| Aturdir | 3.9 |
| Mysql | 8.3 |
| Vía fleta | 10.13 |
| cloc 1 | 2.00 |
| Git 1 | 2.43 |
Antes de elegir si comenzar con una pizarra limpia o una base de datos previamente poblada, asegúrese de que se cumplan los siguientes requisitos:
La zona horaria de la base de datos se establece en +00:00 . Puede verificar esto a través de:
SELECT @@ global . time_zone , @@ session . time_zone ; El planificador de eventos está ON . Puede verificar esto a través de:
SELECT @@ global . event_scheduler ; El registro binario durante la creación de funciones almacenadas se establece en 1 . Puede verificar esto a través de:
SELECT @@ global . log_bin_trust_function_creators ; La base de datos gse existe. Para crearlo:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; El usuario gseadmin existe. Para crear uno, ejecute:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Si prefiere comenzar con una base de datos vacía, no hay nada más que hacer. Las tablas requeridas se generarán a través de migraciones de Flyway durante el inicio inicial del servidor. Sin embargo, si desea que su base de datos local se proponga prepobladamente con los datos que hemos recopilado, puede usar el volcado SQL comprimido que ofrecemos. Organizamos este volcado, junto con las cuatro iteraciones anteriores, en Dropbox. Después de elegir y descargar un volcado de base de datos, puede importar los datos ejecutando:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Antes de intentar ejecutar el servidor, debe generar su propio Token de acceso personal GitHub (PAT). El rastreador se basa en la API GraphQL, que es inaccesible sin autenticación. Para acceder a la información proporcionada por la API de GitHub, el token debe incluir el alcance repo .
Una vez hecho esto, puede ejecutar el servidor localmente usando Maven:
mvn spring-boot:runSi desea utilizar el token al rastrear, especifique en los argumentos de ejecución:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >Alternativamente, puede compilar y ejecutar el frasco directamente:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Aquí hay una lista de argumentos específicos del proyecto respaldados por la aplicación que puede encontrar en la application.properties .
| Nombre de variable | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
ghs.github.tokens | Lista <String> | Lista de tokens de acceso personal de GitHub (PAT) que se utilizarán para minería la API de GitHub. No debe contener cadenas en blanco. | |
ghs.github.api-version | Cadena | 2022-11-28 | Versión de la API de GitHub utilizada en varias operaciones. |
ghs.git.username | Cadena | Inicio de sesión de la cuenta GIT utilizada para interactuar con el sistema de control de versiones. | |
ghs.git.password | Cadena | Contraseña utilizada para autenticar la cuenta GIT especificada. | |
ghs.git.config | MAP <String, String> | Ver aplicación. Propiedades | Configuraciones Git específicas para la aplicación 2 . |
ghs.git.folder-prefix | Cadena | Clone de GHS | Prefijo utilizado para los directorios temporales en los que se clonan los repositorios analizados. No debe estar en blanco. |
ghs.git.ls-remote-timeout-duration | Duración | 1M | Tiempo máximo permitido para enumerar los remotos de repositorios GIT. |
ghs.git.clone-timeout-duration | Duración | 5m | El tiempo máximo permitió la clonación de repositorios GIT. |
ghs.cloc.max-file-size | Data | 25MB | Umbral máximo de tamaño de archivo para el análisis con cloc . |
ghs.cloc.timeout-duration | Duración | 5m | Tiempo máximo permitido para que se ejecute un comando cloc . |
ghs.crawler.enabled | Booleano | verdadero | Especifica si el trabajo de rastreo de repositorio está habilitado. |
ghs.crawler.minimum-stars | intencionalmente | 10 | Bajo inclusivo de la cantidad de estrellas que un proyecto debe tener para ser recogido por el rastreador. No debe ser negativo. |
ghs.crawler.languages | Lista <String> | Ver aplicación. Propiedades | Lista de nombres de idiomas que se dirigirán durante el rastreo. No debe contener cadenas en blanco. Para garantizar las operaciones adecuadas, los nombres deben coincidir con los especificados en lingüista. |
ghs.crawler.start-date | Fecha | 2008-01-01T00: 00: 00Z | Fecha de inicio del rastreador predeterminado: la fecha más temprana para el rastreo de repositorio en ausencia de trabajos de rastreo previos. Formato de valor: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Duración | Pt6h | Retraso entre las sucesivas corridas de rastreador, expresadas como una cadena de duración. |
ghs.analysis.enabled | Booleano | verdadero | Especifica si el trabajo de análisis está habilitado. |
ghs.analysis.delay-between-runs | Duración | Pt6h | Retraso entre las ejecuciones de análisis sucesivas, expresadas como una cadena de duración. |
ghs.analysis.max-pool-threads | intencionalmente | 3 | Cantidad máxima de hilos vivos dedicados a analizar simultáneamente repositorios. Debe ser positivo. |
ghs.clean-up.enabled | Booleano | verdadero | Especifica si el trabajo responsable de eliminar repositorios no disponibles (limpieza) está habilitado. |
ghs.clean-up.cron | Crontrigger | 0 0 0 * * 1 | Retraso entre las sucesivas ejecuciones de limpieza del repositorio, expresadas como una expresión de Spring Cron. |
La forma más fácil de lanzar el front-end es a través del script NPM proporcionado:
npm run dev También puede usar el servidor web incorporado de su IDE o cualquier otro servidor web de su elección. Independientemente del método que elija para alojar, el CORS de back-end lo restringe a usar los puertos 3030 y 7030 .
La pila de implementación consta de los siguientes contenedores:
| Nombre de servicio/contenedor | Imagen | Descripción | Habilitado por defecto |
|---|---|---|---|
gse-database | mysql | Base de datos de plataforma | ✅ |
gse-migration | vía fleta | Ejecuciones de migración del esquema de la base de datos | ✅ |
gse-backup | cansado/db-backup | Copias de seguridad de la base de datos automatizada | ❎ |
gse-server | Seart/GHS-servidor | Aplicación del servidor de arranque de Spring | ✅ |
gse-website | seart/ghs-website | Nginx Web Server que actúa como proveedor de HTML | ✅ |
gse-watchtower | contenerrrr/watchtower | Actualizaciones automáticas de imágenes de Docker | ❎ |
La cadena de dependencia del servicio se puede representar de la siguiente manera:
Gráfico RL
GSE-Migration-> | Servicio_Healthy | gse-database
GSE-Backup-> | Service_Completed_Successfy | migración GSE
GSE-Server-> | Service_Completed_Successfy | migración GSE
GSE-Website-> | Servicio_Healthy | servidor de gse
GSE-WatchTower-> | Servicio_Healthy | website de GSE
La implementación es tan simple como, en el directorio de Docker-Compose, ejecutar:
docker-compose -f docker-compose.yml up -d Es importante tener en cuenta que los pasos de configuración de la base de datos explicados en la sección anterior no son necesarios cuando se ejecuta con Docker. Esto se debe a que las propiedades del entorno pasadas al servicio crearán automáticamente el usuario y la base de datos MySQL durante el inicio inicial. Sin embargo, esta conveniencia no se extiende a los datos de la base de datos, ya que la implementación predeterminada genera una base de datos vacía. Si desea utilizar los datos existentes del volcado, deberá anular la implementación docker-compose para emplear una imagen de base de datos personalizada que incluya el volcado. Para lograr esto, cree su archivo docker-compose.override.yml con el siguiente contenido:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestLa imagen de arriba incluirá el volcado de base de datos más fresco, como máximo 15 días detrás de los datos reales de la plataforma. Para una versión de base de datos más específica, consulte la página Docker Hub. Recuerde especificar el archivo de anulación durante la implementación:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Los datos de la base de datos en sí se mantienen en el volumen gse-data , mientras que los registros detallados de back-end se mantienen en un soporte local llamado registros. También puede usar este archivo de anulación para cambiar las configuraciones de otros servicios. Por ejemplo, especificando su propia palmadita para el rastreador:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-server :
environment :
GHS_GITHUB_TOKENS : " A single or comma-separated list of token(s) "
GHS_CRAWLER_ENABLED : " true " Se puede anular cualquiera de las propiedades de arranque de primavera o las propiedades específicas de la aplicación mencionadas anteriormente. Tenga en cuenta que una propiedad como ghs.xy corresponde a la configuración del entorno de servicio GHS_X_Y .
Otro ejemplo es el servicio de copia de seguridad de la base de datos automatizada, que está deshabilitado de forma predeterminada. Si desea volver a habilitarlo, tendría que agregar lo siguiente al archivo de anulación:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Si tiene ideas para una función que le gustaría ver implementada o si tiene alguna pregunta, le recomendamos que cree una nueva discusión. Al iniciar una discusión, puede interactuar con la comunidad y nuestro equipo, y responderemos de inmediato para abordar sus consultas o considerar sus solicitudes de funciones.
Para informar cualquier problema o error que encuentre, cree un nuevo problema. Proporcionar información detallada sobre el problema que enfrenta nos ayudará a comprenderlo y abordarla de manera más efectiva. Tenga la seguridad de que estamos comprometidos a revisar y responder rápidamente a los problemas que plantea, trabajando en colaboración para resolver cualquier error y mejorar la experiencia general del usuario.
Consulte Contribuir.MD para obtener más información.
Para hacer eso, debe estar familiarizado con las herramientas y prácticas de migración de bases de datos. Este proyecto usa Flyway por Redgate. La regla general para la manipulación del esquema es: crear nuevas migraciones y abstenerse de editar las existentes .
Solo se requiere en versiones antes de 1.7.0 ↩ ↩ 2
Separamos las configuraciones Git a nivel de aplicación de las utilizadas por el usuario para evitar posibles conflictos o confusión. Como tal, se crea un archivo de configuración específico de la aplicación en el directorio temporal en el inicio. La configuración agregada al archivo depende de las entradas ghs.git.config en la application.properties . Tenga en cuenta que las subsecciones de configuración no son compatibles actualmente. ↩