該項目由兩個組成部分組成:
| 依賴性 | 版本要求 |
|---|---|
| 爪哇 | 17 |
| 小牛 | 3.9 |
| mysql | 8.3 |
| 飛速 | 10.13 |
| Cloc 1 | 2.00 |
| git 1 | 2.43 |
在選擇是否從清潔板或預先填充的數據庫開始之前,請確保滿足以下要求:
數據庫時區設置為+00:00 。您可以通過:
SELECT @@ global . time_zone , @@ session . time_zone ;活動調度程序已ON 。您可以通過:
SELECT @@ global . event_scheduler ;存儲功能創建期間的二進制記錄設置為1 。您可以通過:
SELECT @@ global . log_bin_trust_function_creators ; gse數據庫存在。創建它:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; gseadmin用戶存在。要創建一個,請運行:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;如果您更喜歡從一個空數據庫開始,那麼您無濟於事了。所需的表將在服務器初始啟動期間通過Flyway遷移生成。但是,如果您希望您的本地數據庫預先使用我們收集的數據,則可以使用我們提供的壓縮SQL轉儲。我們在Dropbox上託管了此轉儲,以及以前的四個迭代。選擇和下載數據庫轉儲後,您可以通過執行:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse在嘗試運行服務器之前,您應該生成自己的GitHub個人訪問令牌(PAT)。爬蟲依賴於GraphQl API,該API無法訪問而無需身份驗證。要訪問GitHub API提供的信息,令牌必須包括repo範圍。
完成此操作後,您可以使用Maven在本地運行服務器:
mvn spring-boot:run如果您想在爬行時使用令牌,請在運行參數中指定它:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >另外,您可以直接編譯並運行罐子:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar這是您可以在application.properties中找到的應用程序支持的項目特定參數列表。
| 可變名稱 | 類型 | 預設值 | 描述 |
|---|---|---|---|
ghs.github.tokens | 列表<string> | GitHub個人訪問令牌(PATS)的列表將用於挖掘GitHub API。不得包含空白的字符串。 | |
ghs.github.api-version | 細繩 | 2022-11-28 | GitHub API版本在各種操作中使用。 |
ghs.git.username | 細繩 | GIT帳戶登錄用於與版本控制系統進行交互。 | |
ghs.git.password | 細繩 | 用於身份驗證指定的GIT帳戶的密碼。 | |
ghs.git.config | MAP <String,String> | 請參閱application.properties | GIT配置特定於應用程序2 。 |
ghs.git.folder-prefix | 細繩 | ghs-clone- | 用於克隆分析存儲庫的臨時目錄的前綴。一定不能空白。 |
ghs.git.ls-remote-timeout-duration | 期間 | 1m | 列出GIT存儲庫的遙控器允許的最大時間。 |
ghs.git.clone-timeout-duration | 期間 | 5m | 克隆GIT存儲庫允許的最大時間。 |
ghs.cloc.max-file-size | DataSize | 25MB | 用cloc分析的最大文件大小閾值。 |
ghs.cloc.timeout-duration | 期間 | 5m | 允許執行cloc命令的最大時間。 |
ghs.crawler.enabled | 布爾 | 真的 | 指定是否啟用了存儲庫的爬網作業。 |
ghs.crawler.minimum-stars | int | 10 | 為了被爬行者撿起的項目需要擁有的恆星數量的包容性下限。不得負面。 |
ghs.crawler.languages | 列表<string> | 請參閱application.properties | 爬行期間將針對的語言名稱列表。不得包含空白的字符串。為了確保適當的操作,這些名稱必須匹配語言學家中指定的名稱。 |
ghs.crawler.start-date | 日期 | 2008-01-01T00:00:00z | 默認的爬網開始日期:在沒有先驗爬網工作的情況下,存儲庫爬網的最早日期。值格式: yyyy-MM-ddTHH:MM:SSZ 。 |
ghs.crawler.delay-between-runs | 期間 | pt6h | 連續的爬網延遲運行,表示為持續時間字符串。 |
ghs.analysis.enabled | 布爾 | 真的 | 指定是否啟用了分析作業。 |
ghs.analysis.delay-between-runs | 期間 | pt6h | 連續分析之間的延遲運行,表示為持續時間字符串。 |
ghs.analysis.max-pool-threads | int | 3 | 專門分析存儲庫的最大實時線程數量。必須是積極的。 |
ghs.clean-up.enabled | 布爾 | 真的 | 指定是否啟用了負責刪除不可用的存儲庫(清理)的工作。 |
ghs.clean-up.cron | crontrigger | 0 0 0 * * 1 | 連續的存儲庫清理之間的延遲運行,以春季cron的表達表示。 |
啟動前端的最簡單方法是通過提供的NPM腳本:
npm run dev您還可以使用IDE的內置Web服務器或您選擇的任何其他Web服務器。無論您選擇哪種託管方法,後端COR都會限制您使用端口3030和7030 。
部署堆棧由以下容器組成:
| 服務/容器名稱 | 圖像 | 描述 | 默認情況下啟用 |
|---|---|---|---|
gse-database | mysql | 平台數據庫 | ✅ |
gse-migration | 飛速 | 數據庫模式遷移執行 | ✅ |
gse-backup | atheofit/db回复 | 自動數據庫備份 | ❎ |
gse-server | Seart/GHS服務器 | Spring Boot服務器應用程序 | ✅ |
gse-website | seart/ghs-website | NGINX Web服務器充當HTML供應商 | ✅ |
gse-watchtower | contairrrr/watch望塔 | 自動Docker圖像更新 | ❎ |
服務依賴鏈可以表示如下:
圖RL
GSE遷移 - > | service_healthy | GSE數據庫
gse-backup-> | service_completed_successcesly | GSE遷移
GSE-Server-> | service_completed_successcesly | GSE遷移
gse-website-> | service_healthy | GSE服務器
gse-watchtower-> | service_healthy | GSE-Website
部署就像在Docker-Compose目錄中一樣簡單,運行:
docker-compose -f docker-compose.yml up -d重要的是要注意,與Docker一起運行時,在上一節中說明的數據庫設置步驟並不需要。這是因為傳遞給服務的環境屬性將在初始啟動期間自動創建MySQL用戶和數據庫。但是,由於默認部署會生成一個空數據庫,因此此便利不會擴展到數據庫數據。如果您希望使用轉儲中的現有數據,則需要覆蓋docker-compose部署以採用包括轉儲的自定義數據庫圖像。為此,請使用以下內容創建您的docker-compose.override.yml文件:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latest以上圖像將包括最新鮮的數據庫轉儲,最多僅在實際平台數據之後15天。有關更具體的數據庫版本,請參閱“ Docker Hub”頁面。切記在部署過程中指定覆蓋文件:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d數據庫數據本身保存在gse-data卷中,而詳細的後端日誌則保存在稱為日誌的本地安裝座中。您還可以使用此覆蓋文件來更改其他服務的配置。例如,指定自己的PAT為爬行者:
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 "任何彈簧引導屬性或上述應用程序特定的屬性都可以被覆蓋。請記住,諸如ghs.xy之類的屬性對應於GHS_X_Y服務環境設置。
另一個示例是自動化數據庫備份服務,默認情況下是禁用的。如果您想重新啟用它,則必須將以下內容添加到覆蓋文件中:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " 如果您對功能有想法,您希望看到已實施或有任何疑問,我們鼓勵您進行新的討論。通過啟動討論,您可以與社區和我們的團隊互動,我們將迅速做出回應以解決您的查詢或考慮您的功能請求。
要報告您遇到的任何問題或錯誤,請創建一個新問題。提供有關您面臨的問題的詳細信息將有助於我們更有效地理解和解決它。請放心,我們致力於迅速審查並回應您提出的問題,協作以解決任何錯誤並改善整體用戶體驗。
有關更多信息,請參閱貢獻。md。
為此,您應該熟悉數據庫遷移工具和實踐。該項目使用Redgate的Flyway。架構操縱的一般規則是:創建新的遷移,避免編輯現有遷移。
僅在1.7.0之前的版本中需要
我們將應用程序級的GIT配置與用戶避免任何潛在衝突或混亂的應用程序分開。因此,在啟動的臨時目錄中創建了一個特定於應用程序的配置文件。在application.properties中添加的設置取決於ghs.git.config條目。請注意,當前不支持配置小節。 ↩