このプロジェクトは、2つのコンポーネントで構成されています。
| 依存 | バージョンの要件 |
|---|---|
| Java | 17 |
| メイベン | 3.9 |
| mysql | 8.3 |
| フライウェイ | 10.13 |
| Cloc 1 | 2.00 |
| git1 | 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ユーザーが存在します。 1つを作成するには、実行してください。
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;空のデータベースから始めたい場合は、これ以上のことは何もありません。必要なテーブルは、サーバーの最初の起動時にフライウェイの移行を通じて生成されます。ただし、収集したデータにローカルデータベースを事前に入力したい場合は、提供する圧縮SQLダンプを使用できます。このダンプと、以前の4つの反復とともに、Dropboxでホストします。データベースダンプを選択してダウンロードした後、実行してデータをインポートできます。
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gseサーバーを実行しようとする前に、独自のGithub Personal Access Token(PAT)を生成する必要があります。クローラーは、認証なしでアクセスできないGraphQL 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で見つけることができるアプリケーションによってサポートされているプロジェクト固有の引数のリストです。Properties:
| 変数名 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
ghs.github.tokens | リスト<文字列> | GitHub APIのマイニングに使用されるGitHubパーソナルアクセストークン(PAT)のリスト。空白の文字列を含めてはなりません。 | |
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 | データ化 | 25MB | clocを使用した分析の最大ファイルサイズのしきい値。 |
ghs.cloc.timeout-duration | 間隔 | 5m | clocコマンドが実行される最大時間。 |
ghs.crawler.enabled | ブール | 真実 | リポジトリクロールジョブが有効になっているかどうかを指定します。 |
ghs.crawler.minimum-stars | int | 10 | クローラーがピックアップするためにプロジェクトが必要な星の数のための包括的下限。否定的であってはなりません。 |
ghs.crawler.languages | リスト<文字列> | Application.Propertiesを参照してください | クロール中にターゲットにされる言語名のリスト。空白の文字列を含めてはなりません。適切な操作を確保するには、名前は言語学者で指定されたものと一致する必要があります。 |
ghs.crawler.start-date | 日付 | 2008-01-01T00:00:00Z | デフォルトのクローラーの開始日:以前のクロールジョブがない場合、リポジトリがrawうリポジトリの最も早い日付。値形式: 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 | スプリングクロンの表現として表される、連続したリポジトリクリーンアップ実行間の遅延。 |
フロントエンドを起動する最も簡単な方法は、提供されたNPMスクリプトを使用することです。
npm run dev IDEの組み込みWebサーバー、または選択した他のWebサーバーを使用することもできます。ホスティングに選択した方法に関係なく、バックエンドCORSはポート3030および7030使用を制限します。
展開スタックは、次のコンテナで構成されています。
| サービス/コンテナ名 | 画像 | 説明 | デフォルトで有効になっています |
|---|---|---|---|
gse-database | mysql | プラットフォームデータベース | ✅ |
gse-migration | フライウェイ | データベーススキーマ移行実行 | ✅ |
gse-backup | sowedofit/db-backup | 自動化されたデータベースバックアップ | ❎ |
gse-server | seart/ghs-server | Spring Boot Serverアプリケーション | ✅ |
gse-website | seart/ghs-website | HTMLサプライヤーとして機能するNginx Webサーバー | ✅ |
gse-watchtower | cantablrr/監視機 | 自動Docker画像の更新 | ❎ |
サービス依存関係チェーンは、次のように表現できます。
グラフRL
GSE移行 - > | service_healthy | gse-database
gse-backup-> | service_completed_successelly | GSE移行
gse-server - > | service_completed_successelly | 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ボリュームに保持され、詳細なバックエンドログはログと呼ばれるローカルマウントに保持されます。このオーバーライドファイルを使用して、他のサービスの構成を変更することもできます。たとえば、クローラーに独自のパットを指定する:
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 " 実装を見たい機能のアイデアがある場合、またはご質問がある場合は、新しいディスカッションを作成することをお勧めします。ディスカッションを開始することで、コミュニティと私たちのチームと関わることができます。迅速に応答して、クエリに対処するか、機能リクエストを検討します。
遭遇する問題やバグを報告するには、新しい問題を作成します。あなたが直面している問題に関する詳細な情報を提供することは、それをより効果的に理解し、対処するのに役立ちます。安心して、私たちはあなたが提起する問題を迅速にレビューして応答し、バグを解決し、ユーザーエクスペリエンス全体を改善するために協力して作業することに取り組んでいます。
詳細については、Contributing.mdを参照してください。
そのためには、データベースの移行ツールとプラクティスに精通している必要があります。このプロジェクトでは、RedgateのFlywayを使用しています。スキーマ操作の一般的なルールは、新しい移行を作成し、既存の移行を編集しないことです。
1.7.0より前のバージョンでのみ必要です↩2
潜在的な競合や混乱を避けるために、アプリケーションレベルのGIT構成をユーザーが使用するものから分離します。そのため、アプリケーション固有の構成ファイルは、起動の一時ディレクトリに作成されます。ファイルに追加された設定は、 application.propertiesのghs.git.configエントリによって異なります。properties。現在、構成サブセクションはサポートされていないことに注意してください。 ↩