依存関係の自動送信について
Note
現在、依存関係の自動送信は Maven でのみサポートされています。
依存関係グラフは、リポジトリが依存する依存関係をユーザーが理解できるように、リポジトリ内のマニフェストとロック ファイルを分析します。 ただし、一部のエコシステムでは、推移的な依存関係の解決はビルド時に発生し、GitHub では、リポジトリの内容だけに基づいてすべての依存関係を自動的に検出することはできません。
リポジトリの依存関係の自動送信を有効にすると、GitHub はリポジトリ内の推移的な依存関係を自動的に識別し、依存関係送信 API を使用してこれらの依存関係を GitHub に送信します。 その後、依存関係グラフを使用して、これらの依存関係を報告できます。
自動依存関係の送信の使用は、GitHub Actions 分にカウントされます。 詳しくは、「GitHub Actions の課金について」をご覧ください。
必要に応じて、自動依存関係の送信のために、セルフホステッド ランナーまたは GitHub ホスト型 より大きなランナー (larger runner) を構成することもできます。 詳細については、「自動依存関係の送信にセルフホステッド ランナーを使用する」および「自動依存関係の送信に GitHub でホストされる大規模なランナーを使用する」を参照してください。
前提条件
依存関係の自動送信を有効にするには、リポジトリに対して依存関係グラフを有効にする必要があります。
また、依存関係の自動送信を使用するには、リポジトリに対して GitHub Actions を有効にする必要があります。 詳しくは、「リポジトリの GitHub Actions の設定を管理する」をご覧ください。
依存関係の自動送信の有効化
リポジトリ管理者は、この手順で説明されている手順に従って、リポジトリの依存関係の自動送信を有効または無効にすることができます。
組織の所有者は、セキュリティ構成を使用して、複数のリポジトリの依存関係の自動送信を有効にすることができます。 詳しくは、「カスタム セキュリティ構成の作成」をご覧ください。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
-
サイドバーの [Security] セクションで、[ Code security] をクリックします。
-
[依存関係グラフ] で、[自動依存関係の送信] の横にあるドロップダウン メニューをクリックし、 Enabled を選択します。
リポジトリの依存関係の自動送信を有効にすると、GitHub は次のようになります。
- リポジトリのすべてのブランチにあるリポジトリのルートにある
pom.xml
ファイルへの変更を監視します。 - 変更ごとに依存関係の自動送信を実行します。
リポジトリの Actions タブを表示すると、自動ワークフローの実行に関する詳細を表示できます。
Note
オプションが有効になった後、pom.xml
ファイルへの最初のプッシュで自動送信が行われます。
セルフホステッド ランナーを使用した依存関係の自動送信
GitHub Actions インフラストラクチャを使用する代わりに、自動依存関係送信ジョブを実行するようにセルフホステッド ランナーを構成できます。
- 1つか複数のセルフホステッド ランナーを、リポジトリまたは組織レベルでプロビジョニングします。 詳細については、「自己ホスト ランナーの概要」および「自己ホストランナーの追加」を参照してください。 セルフホステッド ランナーは Linux または macOS 上で実行されており、Docker がインストールされている必要があります。
- 依存関係の自動送信を使用する各ランナーに
dependency-submission
ラベルを割り当てます。 詳しくは、「セルフホストランナーとのラベルの利用」をご覧ください。 - サイドバーの [Security] セクションで、[ Code security] をクリックします。
- [依存関係グラフ] で、[自動依存関係の送信] の横にあるドロップダウン メニューをクリックし、ラベル付きランナー ** [有効] を選択します**。
有効にすると、次の場合を除き、自動依存関係送信ジョブはセルフホステッド ランナーで実行されます。
- セルフホステッド ランナーは使用できません。
dependency-submission
ラベルでタグ付けされたランナー グループはありません。
Note
セルフホステッド ランナーを使用する場合は、依存関係の送信ワークフローがプライベート レジストリに接続できるように、Maven サーバー設定ファイルへのアクセスを追加する必要があります。 プライベート レジストリからの依存関係は、次の pom.xml
更新プログラムの依存関係ツリーに含まれます。 Maven サーバー設定ファイルの詳細については、Maven ドキュメントの「 Security and Deployment Settings 」を参照してください。
依存関係の自動送信に GitHub ホスト型 より大きなランナー (larger runner) を使用する
GitHub Team または GitHub Enterprise Cloud ユーザーは、より大きなランナー (larger runner) を使用して、依存関係の自動送信ジョブを実行できます。
dependency-submission
という名前で、組織レベルで大きなランナーをプロビジョニングします。 詳しくは、「Organization への より大きなランナー の追加」をご覧ください。- リポジトリにランナーへのアクセス権を付与します。 詳しくは、「より大きなランナー (larger runner) へのアクセスをリポジトリに許可する」をご覧ください。
- [依存関係グラフ] で、[自動依存関係の送信] の横にあるドロップダウン メニューをクリックし、ラベル付きランナー ** [有効] を選択します**。
依存関係の自動送信のトラブルシューティング
現在、依存関係の自動送信は Maven でのみサポートされています。 この機能では、Maven Dependency Tree Submission アクションが使用されます。 詳細については、GitHub Marketplace の Maven Dependency Tree Dependency Submission アクションのドキュメントを参照してください。 プロジェクトで標準以外の Maven 構成を使用している場合、依存関係が正しく生成されず、依存関係グラフに送信されない可能性があります。
依存関係の自動送信は、ワークフローを高速化するため、キャッシュ アクションを使って、実行と実行の間でパッケージのダウンロードのキャッシュをベスト エフォートで行います。 自己ホストランナーの場合、ユーザーは独自のインフラストラクチャ内でこのキャッシュを管理したいことがあります。 これを行うには、環境変数 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE
を true
に設定して、組み込みのキャッシュを無効にできます。 詳しくは、「変数に情報を格納する」をご覧ください。