Ce projet est composé de deux composants:
| Dépendance | Besoin de version |
|---|---|
| Java | 17 |
| Maven | 3.9 |
| Mysql | 8.3 |
| Volet | 10.13 |
| CLOC 1 | 2,00 |
| Git 1 | 2.43 |
Avant de choisir de commencer par une ardoise propre ou une base de données pré-peuplée, assurez-vous que les exigences suivantes sont satisfaites:
Le fuseau horaire de la base de données est défini sur +00:00 . Vous pouvez le vérifier via:
SELECT @@ global . time_zone , @@ session . time_zone ; Le planificateur d'événements est ON . Vous pouvez le vérifier via:
SELECT @@ global . event_scheduler ; La journalisation binaire lors de la création de fonctions stockées est définie sur 1 . Vous pouvez le vérifier via:
SELECT @@ global . log_bin_trust_function_creators ; La base de données gse existe. Pour le créer:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; L'utilisateur gseadmin existe. Pour en créer un, exécutez:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Si vous préférez commencer par une base de données vide, il n'y a rien de plus à faire. Les tables requises seront générées par le biais de migrations de voies de survol lors du démarrage initial du serveur. Cependant, si vous souhaitez que votre base de données locale soit préalable avec les données que nous avons collectées, vous pouvez utiliser le vidage SQL compressé que nous proposons. Nous hébergeons ce vidage, ainsi que les quatre itérations précédentes, sur Dropbox. Après avoir choisi et téléchargé un vidage de base de données, vous pouvez importer les données en exécutant:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Avant d'essayer d'exécuter le serveur, vous devez générer votre propre jeton d'accès personnel GitHub (PAT). Le Crawler s'appuie sur l'API GraphQL, qui est inaccessible sans authentification. Pour accéder aux informations fournies par l'API GitHub, le jeton doit inclure la portée repo .
Une fois cela fait, vous pouvez exécuter le serveur localement à l'aide de maven:
mvn spring-boot:runSi vous souhaitez utiliser le jeton lorsque vous rampez, spécifiez-le dans les arguments d'exécution:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >Alternativement, vous pouvez compiler et exécuter directement le pot:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Voici une liste des arguments spécifiques au projet pris en charge par l'application que vous pouvez trouver dans l' application.properties :
| Nom variable | Taper | Valeur par défaut | Description |
|---|---|---|---|
ghs.github.tokens | Liste <string> | Liste des jetons d'accès personnels GitHub (PATS) qui seront utilisés pour l'exploitation de l'API GitHub. Ne doit pas contenir de chaînes vides. | |
ghs.github.api-version | Chaîne | 2022-11-28 | Version de l'API GitHub utilisée dans diverses opérations. |
ghs.git.username | Chaîne | Connexion du compte Git utilisé pour interagir avec le système de contrôle de version. | |
ghs.git.password | Chaîne | Mot de passe utilisé pour authentifier le compte GIT spécifié. | |
ghs.git.config | Map <string, string> | Voir application.properties | Configurations GIT spécifiques à l'application 2 . |
ghs.git.folder-prefix | Chaîne | ghs-clone- | Préfixe utilisé pour les répertoires temporaires dans lesquels les référentiels analysés sont clonés. Ne doit pas être vide. |
ghs.git.ls-remote-timeout-duration | Durée | 1m | Temps maximum autorisé pour la liste des télécommandes des référentiels GIT. |
ghs.git.clone-timeout-duration | Durée | 5m | Temps maximum autorisé pour le clonage des référentiels Git. |
ghs.cloc.max-file-size | Datasize | 25 Mo | Seuil maximum de taille de fichier pour l'analyse avec cloc . |
ghs.cloc.timeout-duration | Durée | 5m | Le temps maximum a permis à une commande cloc à exécuter. |
ghs.crawler.enabled | Booléen | vrai | Spécifie si le travail de rampe de référentiel est activé. |
ghs.crawler.minimum-stars | int | 10 | Inférieur inclusif pour le nombre d'étoiles qu'un projet doit avoir pour être ramassé par le robot. Ne doit pas être négatif. |
ghs.crawler.languages | Liste <string> | Voir application.properties | Liste des noms de langue qui seront ciblés lors de la rampe. Ne doit pas contenir de chaînes vides. Pour garantir des opérations appropriées, les noms doivent correspondre à ceux spécifiés en linguiste. |
ghs.crawler.start-date | Date | 2008-01-01T00: 00: 00Z | Date de démarrage par défaut par défaut: la date la plus ancienne pour le référentiel rampant en l'absence de travaux de chantier antérieurs. Format de valeur: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Durée | Pt6h | Le retard entre les crawler successifs fonctionne, exprimé en tant que chaîne de durée. |
ghs.analysis.enabled | Booléen | vrai | Spécifie si le travail d'analyse est activé. |
ghs.analysis.delay-between-runs | Durée | Pt6h | Le retard entre l'analyse successive exécute, exprimé en tant que chaîne de durée. |
ghs.analysis.max-pool-threads | int | 3 | Montant maximum de fils en direct dédiés à l'analyse simultané des référentiels. Doit être positif. |
ghs.clean-up.enabled | Booléen | vrai | Spécifie si le travail responsable de la suppression des référentiels indisponibles (nettoyage) est activé. |
ghs.clean-up.cron | Ajoutant | 0 0 0 * * 1 | Retard entre les exécutions de nettoyage du référentiel successifs, exprimés en expression de Spring Cron. |
La façon la plus simple de lancer le front-end est le script NPM fourni:
npm run dev Vous pouvez également utiliser le serveur Web intégré de votre IDE ou tout autre serveur Web de votre choix. Quelle que soit la méthode que vous choisissez pour l'hébergement, le CORS back-end vous limite à l'utilisation des ports 3030 et 7030 .
La pile de déploiement se compose des conteneurs suivants:
| Nom du service / conteneur | Image | Description | Activé par défaut |
|---|---|---|---|
gse-database | mysql | Base de données de plate-forme | ✅ |
gse-migration | volet | Exécutions de migration du schéma de base de données | ✅ |
gse-backup | fatiguée / db-backup | Sauvegardes automatisées de la base de données | ❎ |
gse-server | SEART / GHS-Server | Application Spring Boot Server | ✅ |
gse-website | seart / ghs-website | Serveur Web Nginx agissant comme fournisseur HTML | ✅ |
gse-watchtower | CONTRATRRR / WATCHTOWER | Mises à jour automatique de l'image Docker | ❎ |
La chaîne de dépendance des services peut être représentée comme suit:
graphique RL
GSE-migration -> | service_healthy | Database GSE
GSE-BACKUP -> | Service_Completed_Successly | migration GSE
GSE-Server -> | Service_Completed_Successly | migration GSE
GSE-WebSite -> | Service_Healthy | serveur GSE
GSE-watchtower -> | service_healthy | website GSE
Le déploiement est aussi simple que, dans le répertoire Docker-Compose, exécuter:
docker-compose -f docker-compose.yml up -d Il est important de noter que les étapes de configuration de la base de données expliquées dans la section précédente ne sont pas nécessaires lors de l'exécution avec Docker. En effet, les propriétés environnementales transmises au service créeront automatiquement l'utilisateur et la base de données MySQL pendant le démarrage initial. Cependant, cette commodité ne s'étend pas aux données de la base de données, car le déploiement par défaut génère une base de données vide. Si vous souhaitez utiliser les données existantes à partir des vidages, vous devrez remplacer le déploiement docker-compose pour utiliser une image de base de données personnalisée qui inclut le vidage. Pour y parvenir, créez votre fichier docker-compose.override.yml avec le contenu suivant:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestL'image ci-dessus comprendra le vidage de la base de données le plus frais, au maximum 15 jours derrière les données réelles de la plate-forme. Pour une version de base de données plus spécifique, reportez-vous à la page Docker Hub. N'oubliez pas de spécifier le fichier de remplacement pendant le déploiement:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Les données de la base de données elle-même sont conservées dans le volume gse-data , tandis que les journaux arrière détaillés sont conservés dans une monture locale appelée journaux. Vous pouvez également utiliser ce fichier de remplacement pour modifier les configurations d'autres services. Par exemple, spécifiant votre propre tapis pour le robot:
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 " L'une des propriétés de démarrage de ressort ou des propriétés spécifiques à l'application susmentionnées peuvent être remplacées. Gardez à l'esprit qu'une propriété telle que ghs.xy correspond au paramètre de service GHS_X_Y .
Un autre exemple est le service automatisé de sauvegarde de la base de données, qui est désactivé par défaut. Si vous souhaitez le réactiver, vous devrez ajouter ce qui suit au fichier de remplacement:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Si vous avez des idées pour une fonctionnalité que vous souhaitez voir mise en œuvre ou si vous avez des questions, nous vous encourageons à créer une nouvelle discussion. En lançant une discussion, vous pouvez vous engager avec la communauté et notre équipe, et nous répondrons rapidement pour répondre à vos requêtes ou considérer vos demandes de fonctionnalités.
Pour signaler tout problème ou bug que vous rencontrez, créez un nouveau problème. Fournir des informations détaillées sur le problème auquel vous êtes confronté nous aidera à comprendre et à les résoudre plus efficacement. Rassurez-vous, nous nous sommes engagés à examiner et à répondre rapidement aux problèmes que vous soulevez, en travaillant en collaboration pour résoudre tout bogue et améliorer l'expérience utilisateur globale.
Reportez-vous à contribution.md pour plus d'informations.
Pour ce faire, vous devez être familier avec les outils et les pratiques de migration de la base de données. Ce projet utilise la voie de survol de Redgate. La règle générale de la manipulation du schéma est: créer de nouvelles migrations et s'abstenir de modifier celles existantes .
Uniquement requis dans les versions avant 1,7.0 ↩ ↩ 2
Nous séparons les configurations GIT au niveau de l'application de celles utilisées par l'utilisateur pour éviter tout conflit ou confusion potentiel. En tant que tel, un fichier de configuration spécifique à l'application est créé dans le répertoire temporaire au démarrage. Les paramètres ajoutés au fichier dépendent des entrées ghs.git.config dans l' application.properties . Notez que les sous-sections de configuration ne sont actuellement pas prises en charge. ↩