Dieses Projekt besteht aus zwei Komponenten:
| Abhängigkeit | Versionsanforderung |
|---|---|
| Java | 17 |
| Maven | 3.9 |
| Mysql | 8.3 |
| Flyway | 10.13 |
| CLOC 1 | 2.00 |
| Git 1 | 2.43 |
Stellen Sie vor der Auswahl der folgenden Anforderungen erfüllt, bevor Sie mit einer sauberen Schiefer- oder vorgepopulierten Datenbank beginnen:
Die Datenbank TimeZone ist auf +00:00 gesetzt. Sie können dies über:
SELECT @@ global . time_zone , @@ session . time_zone ; Der Veranstaltungsplaner ist ON . Sie können dies über:
SELECT @@ global . event_scheduler ; Die binäre Protokollierung während der Erstellung gespeicherter Funktionen ist auf 1 gesetzt. Sie können dies über:
SELECT @@ global . log_bin_trust_function_creators ; Die gse -Datenbank existiert. Um es zu erstellen:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; Der gseadmin -Benutzer existiert. Um einen zu erstellen, rennen Sie:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Wenn Sie es vorziehen, mit einer leeren Datenbank zu beginnen, gibt es nichts mehr für Sie. Die erforderlichen Tabellen werden während des ersten Starts des Servers über Flyway -Migrationen erzeugt. Wenn Sie jedoch möchten, dass Ihre lokale Datenbank mit den von uns gesammelten Daten vorgepopuliert wird, können Sie den von uns angebotenen komprimierten SQL-Dump verwenden. Wir veranstalten diese Müllkippe zusammen mit den vier vorherigen Iterationen auf Dropbox. Nachdem Sie einen Datenbank -Dump ausgewählt und heruntergeladen haben, können Sie die Daten durch Ausführung importieren:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Bevor Sie versuchen, den Server auszuführen, sollten Sie Ihr eigenes GitHub Personal Access Token (PAT) generieren. Der Crawler stützt sich auf die GraphQL -API, die ohne Authentifizierung unzugänglich ist. Um auf die von der Github -API bereitgestellten Informationen zuzugreifen, muss das Token den repo -Bereich enthalten.
Sobald dies erledigt ist, können Sie den Server lokal mit Maven ausführen:
mvn spring-boot:runWenn Sie beim Kriechen das Token verwenden möchten, geben Sie es in den Laufargumenten an:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >Alternativ können Sie das Glas direkt kompilieren und ausführen:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Hier finden Sie eine Liste projektspezifischer Argumente, die von der Anwendung unterstützt werden, die Sie in der application.properties finden. Properties:
| Variabler Name | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ghs.github.tokens | Liste <string> | Liste der GitHub Personal Access Tokens (Pats), die zum Bergbau der Github -API verwendet werden. Darf keine leeren Saiten enthalten. | |
ghs.github.api-version | Saite | 2022-11-28 | GitHub -API -Version, die in verschiedenen Operationen verwendet wird. |
ghs.git.username | Saite | GIT -Konto Login verwendet, um mit dem Versionskontrollsystem zu interagieren. | |
ghs.git.password | Saite | Passwort verwendet, um das angegebene Git -Konto zu authentifizieren. | |
ghs.git.config | Karte <String, String> | Siehe application.Properties | Git -Konfigurationen spezifisch für die Anwendung 2 . |
ghs.git.folder-prefix | Saite | GHS-Clone- | Präfix für die temporären Verzeichnisse, in die analysierte Repositorys kloniert sind. Darf nicht leer sein. |
ghs.git.ls-remote-timeout-duration | Dauer | 1m | Die maximale Zeit ermöglicht die Auflistung von Fernbedienungen von Git -Repositories. |
ghs.git.clone-timeout-duration | Dauer | 5m | Die maximale Zeit ermöglichte das Klonen von Git -Repositories. |
ghs.cloc.max-file-size | DataSize | 25mb | Maximale Dateigrößenschwelle für die Analyse mit cloc . |
ghs.cloc.timeout-duration | Dauer | 5m | Die maximale Zeit ermöglicht einen cloc -Befehl zum Ausführen. |
ghs.crawler.enabled | Boolean | WAHR | Gibt an, ob der Auftrag des Repository -Crawling -Jobs aktiviert ist. |
ghs.crawler.minimum-stars | int | 10 | Inklusive Untergrenze für die Anzahl der Sterne, die ein Projekt haben muss, um vom Crawler aufgenommen zu werden. Darf nicht negativ sein. |
ghs.crawler.languages | Liste <string> | Siehe application.Properties | Liste der Sprachnamen, die während des Krabbelns gezielt werden. Darf keine leeren Saiten enthalten. Um ordnungsgemäße Vorgänge sicherzustellen, müssen die Namen den in Linguisten angegebenen Anpassungen übereinstimmen. |
ghs.crawler.start-date | Datum | 2008-01-01T00: 00: 00Z | Standard -Crawler -Startdatum: Das früheste Datum für das Repository -Krabbeln ohne frühere Crawl -Jobs. Wertformat: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Dauer | Pt6h | Verzögerung zwischen aufeinanderfolgenden Crawler -Läufen, ausgedrückt als Dauerzeichenfolge. |
ghs.analysis.enabled | Boolean | WAHR | Gibt an, ob der Analysejob aktiviert ist. |
ghs.analysis.delay-between-runs | Dauer | Pt6h | Verzögerung zwischen aufeinanderfolgenden Analyseläufen, ausgedrückt als Dauerzeichenfolge. |
ghs.analysis.max-pool-threads | int | 3 | Maximale Menge an lebenden Fäden, die gleichzeitig Repositorys analysieren. Muss positiv sein. |
ghs.clean-up.enabled | Boolean | WAHR | Gibt an, ob der Job, der für die Entfernung nicht verfügbarer Repositories (Aufräumarbeiten) verantwortlich ist, aktiviert ist. |
ghs.clean-up.cron | Crontrigger | 0 0 0 * * 1 | Verzögerung zwischen aufeinanderfolgenden Aufräumarbeiten, die als Feder-Cron-Ausdruck ausgedrückt werden. |
Der einfachste Weg, um das Front-End zu starten, ist das bereitgestellte NPM-Skript:
npm run dev Sie können auch den integrierten Webserver Ihrer IDE oder einen anderen Webserver Ihrer Wahl verwenden. Unabhängig davon, welche Methode Sie für das Hosting auswählen, beschränken Sie die Back-End-CORs auf die Verwendung von Ports 3030 und 7030 .
Der Einsatzstapel besteht aus den folgenden Behältern:
| Service/Containername | Bild | Beschreibung | Standardmäßig aktiviert |
|---|---|---|---|
gse-database | Mysql | Plattformdatenbank | ✅ |
gse-migration | Flyway | Datenbankschema -Migrationsausführungen | ✅ |
gse-backup | müde/db-backup | Automatisierte Datenbanksicherungen | ❎ |
gse-server | SEAST/GHS-SERVER | Spring Boot Server -Anwendung | ✅ |
gse-website | SEAST/GHS-Website | Nginx Webserver fungiert als HTML -Lieferant | ✅ |
gse-watchtower | Lagenrrr/Wachtturm | Automatische Docker -Bildaktualisierungen | ❎ |
Die Service -Abhängigkeitskette kann wie folgt dargestellt werden:
Graph Rl
GSE-Migration-> | Service_Healthy | GSE-DATABASE
GSE-BACKUP-> | service_completed_successition | GSE-Migration
gse-server-> | service_completed_successFoy | GSE-Migration
GSE-Website-> | Service_Healthy | GSE-SERVER
GSE-WATCHTOWER-> | Service_Healthy | GSE-Websit
Die Bereitstellung ist so einfach wie im Docker-Compose-Verzeichnis ausführen:
docker-compose -f docker-compose.yml up -d Es ist wichtig zu beachten, dass die im vorhergehenden Abschnitt erläuterten Datenbank -Setup -Schritte beim Ausführen mit Docker nicht erforderlich sind. Dies liegt daran, dass die an den Dienst übergebenen Umgebungseigenschaften während des ersten Starts automatisch den MySQL -Benutzer und die Datenbank erstellen. Diese Komfort erstreckt sich jedoch nicht auf die Datenbankdaten, da die Standardbereitstellung eine leere Datenbank generiert. Wenn Sie vorhandene Daten aus den Dumps verwenden möchten, müssen Sie die docker-compose Bereitstellung überschreiben, um ein benutzerdefiniertes Datenbankbild zu verwenden, das den Dump enthält. Um dies zu erreichen, erstellen Sie Ihre docker-compose.override.yml -Datei mit den folgenden Inhalten:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestDas obige Bild enthält den frischesten Datenbank -Dump, an dem höchstens 15 Tage hinter den tatsächlichen Plattformdaten. Eine spezifischere Datenbankversion finden Sie auf der Seite Docker Hub. Denken Sie daran, die Override -Datei während der Bereitstellung anzugeben:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Die Datenbankdaten selbst werden im gse-data aufbewahrt, während detaillierte Back-End-Protokolle in einer lokalen Halterung bezeichnet werden. Sie können diese Override -Datei auch verwenden, um die Konfigurationen anderer Dienste zu ändern. Zum Beispiel Ihre eigene Pat für den Crawler angeben:
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 " Jedes der Feder-Boot-Eigenschaften oder die oben genannten anwendungsspezifischen Eigenschaften kann überschrieben werden. Beachten Sie, dass eine Eigenschaft wie ghs.xy der Einstellung der GHS_X_Y -Dienstumgebungsumgebung entspricht.
Ein weiteres Beispiel ist der automatisierte Datenbanksicherungsdienst, der standardmäßig deaktiviert ist. Wenn Sie es wieder aufnehmen möchten, müssten Sie der Override-Datei Folgendes hinzufügen:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Wenn Sie Ideen für eine Funktion haben, die Sie implementiert sehen möchten, oder wenn Sie Fragen haben, empfehlen wir Ihnen, eine neue Diskussion zu erstellen. Durch die Einleitung einer Diskussion können Sie sich mit der Community und unserem Team befassen, und wir werden umgehend darauf reagieren, um Ihre Fragen zu beheben oder Ihre Feature -Anfragen zu berücksichtigen.
Um Probleme oder Fehler zu melden, denen Sie begegnen, erstellen Sie ein neues Problem. Durch die Bereitstellung detaillierter Informationen zu dem Problem, mit dem Sie konfrontiert sind, können wir es effektiver verstehen und angehen. Seien Sie versichert, wir sind verpflichtet, die Probleme, die Sie aufwerfen, umgehend zu überprüfen und auf Probleme zu reagieren, und arbeiten zusammen, um Fehler zu beheben und die allgemeine Benutzererfahrung zu verbessern.
Weitere Informationen finden Sie unter beitragen.md.
Dazu sollten Sie mit Datenbankmigrationstools und -Praktiken vertraut sein. Dieses Projekt verwendet Flyway von Redgate. Die allgemeine Regel für die Schema -Manipulation lautet: Erstellen neuer Migrationen und verzichten Sie nicht darauf, bestehende zu bearbeiten .
Nur in Versionen vor 1,7.0 ↩ ↩ 2 erforderlich
Wir trennen die Git-Konfigurationen auf Anwendungsebene von den vom Benutzer verwendeten, um potenzielle Konflikte oder Verwirrung zu vermeiden. Aus diesem Grund wird eine anwendungsspezifische Konfigurationsdatei im temporären Verzeichnis beim Start erstellt. Die Einstellungen zur Datei hängen von den Einträgen ghs.git.config in der application.properties ab. Beachten Sie, dass Konfigurationsuntersuchungen derzeit nicht unterstützt werden. ↩