该项目由两个组成部分组成:
| 依赖性 | 版本要求 |
|---|---|
| 爪哇 | 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条目。请注意,当前不支持配置小节。 ↩