セルフホステッド ランナーのネットワーク アクセスを構成する
ファイアウォール内で外向きのインターネットアクセスが制限されている環境でセルフホステッドランナーを運用する場合、依存関係の自動送信のために特定のURLを許可リスト(ホワイトリスト)に追加する必要があります。 必要な URL は、リポジトリが使用するエコシステムによって異なります。
すべてのエコシステムに必要な URL
すべての自動依存関係送信ワークフローには、次の URL が必要です。
-
`https://github.com`GitHub にアクセスし、アクションをダウンロードするために必要です。 -
`https://api.github.com`GitHub API アクセスに必要です。 -
`https://*.githubusercontent.com`—アクションのソース コードとリリース ( `raw.githubusercontent.com`、 `github-releases.githubusercontent.com`、 `objects.githubusercontent.com`を含む) をダウンロードするために必要です。
エコシステム固有の URL
使用するエコシステムによっては、追加の URL を許可リストする必要がある場合があります。
Go
-
`https://go.dev`—Go ツールチェーンをダウンロードする場合。 -
`https://golang.org`—Go ダウンロード用の代替ドメイン。 -
`https://proxy.golang.org`—依存関係検出中に Go モジュールをダウンロードするための公式 Go モジュール プロキシ。
メモ
`actions/go-versions` リポジトリには、`https://raw.githubusercontent.com`経由でアクセスします。これは、一般的な要件で既に説明されています。
Java (Maven と Gradle)
-
`https://repo.maven.apache.org`依存関係をダウンロードするための Maven Central リポジトリ。 -
`https://api.adoptium.net`—Adoptium/Temurin JDK ディストリビューション ( `actions/setup-java` で使用される既定のディストリビューション) をダウンロードする場合。
別の JDK ディストリビューションを使用する場合は、次のものが必要になる場合もあります。
-
`https://aka.ms` および `https://download.microsoft.com`— Microsoft Build of OpenJDKの場合 (注: `aka.ms`は.NETダウンロードにも使用されます)。 -
`https://download.oracle.com`—Oracle JDK の場合。 -
`https://api.azul.com`:Azul Zulu OpenJDK の場合。
.NET (C#、F#、Visual Basic)
-
`https://aka.ms`— .NETのダウンロード場所にリダイレクトする Microsoft URL 短縮機能。 -
`https://builds.dotnet.microsoft.com`- .NET SDK とランタイムダウンロードのプライマリ フィード。 -
`https://ci.dot.net`- .NET ビルドのセカンダリ フィード。
メモ
.NET自動提出で使用される microsoft/component-detection ツールはGitHub リリースからダウンロードされます。これは、一般的な要件 (https://github.com および https://*.githubusercontent.com) で既に説明されています。
Python
-
`https://python.org`- Python インタープリターをダウンロードします。
メモ
`actions/python-versions` リポジトリと`microsoft/component-detection` リリースには、一般的な要件 (`https://*.githubusercontent.com` と`https://github.com`) で既に説明されている URL を使用してアクセスします。
GitHub-hosted より大きなランナー (larger runner) を用いて依存関係を自動的に送信します
GitHub Team または GitHub Enterprise Cloud のユーザーは、より大きなランナー (larger runner) を使用して依存関係の自動送信ジョブを実行できます。
- Organization レベルで、名前が
dependency-submissionの大規模ランナーをプロビジョニングします。 詳細については、「Organization に より大きなランナー を追加する」を参照してください。 - リポジトリにランナーへのアクセスを許可します。 詳細については、「リポジトリによる より大きなランナー (larger runner) へのアクセスを許可する」を参照してください。
- [依存関係グラフ] で、[依存関係の自動送信] の横にあるドロップダウン メニューを選択し、[ラベル付きランナーで有効] を選びます。
依存関係の自動送信のトラブルシューティング
依存関係の自動送信では、ワークフローを高速化するために、Cache アクションを使用して実行間でパッケージのダウンロードをキャッシュするよう最善を尽くします。 セルフホステッド ランナーの場合、このキャッシュを独自のインフラストラクチャ内で管理することもできます。 これを行うには、環境変数 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE を true に設定して、組み込みキャッシュを無効にできます。 詳しくは、「変数に情報を格納する」をご覧ください。
マニフェストの重複排除
リポジトリでは、依存関係の送信に複数のメソッドを使用できます。これにより、同じパッケージ マニフェストが複数回スキャンされる可能性があり、各スキャンからの出力が異なる可能性があります。 依存関係グラフは重複除去ロジックを使って出力を解析し、各マニフェスト ファイルの最も正確な情報を優先します。
依存関係グラフには、次の優先順位規則が使われ、各マニフェスト ファイルのインスタンスが 1 つだけ表示されます。
-
**ユーザー送信**は、通常、成果物のビルド中に作成され、最も情報がそろっているため、最優先されます。- 異なる detector からの手動スナップショットが複数ある場合、correlator のアルファベット順に並べ替えられ、最初のものが使われます。
- 同じ検出器を持つ 2 つの相関器がある場合、解決された依存関係はマージされます。 correlator と detector の詳細については、「依存関係送信用の REST API エンドポイント」を参照してください。
-
**自動送信**は、成果物のビルド中にも作成されますが、ユーザーによって送信されたものではないため、2 番目に高い優先順位になります。 -
**静的分析結果**は、使用できるデータが他にない場合に使われます。
パッケージ エコシステム別の情報
Maven プロジェクト
Maven プロジェクトの場合、依存関係の自動送信では、Maven Dependency Tree Dependency Submission のopen sourceフォークが実行されます。 このフォークにより、GitHub は上流リポジトリと同期を保ちつつ、自動送信にのみ適用されるいくつかの変更を維持できます。 このフォークのソースは advanced-security/maven-dependency-submission-action で確認できます。
リポジトリの依存関係が正確でないように見える場合は、最後に依存関係グラフがビルドされた時刻のタイムスタンプが、pom.xml ファイルへの最後の変更と一致しているかを確認してください。 このタイムスタンプは、リポジトリの Dependabot alerts タブにあるアラートの一覧表に表示されます。pom.xml を更新するコミットをプッシュすると、Dependency Tree Submission アクションの新しい実行がトリガーされ、そのリポジトリの依存関係グラフが強制的に再ビルドされます。
Gradle プロジェクト
Gradle プロジェクトの場合、依存関係の自動送信には、gradle/actions のオープンソース Gradle アクションのフォークが実行されます。 このフォークは actions/gradle-build-tools-actions で入手できます。 自動送信アクションの結果は、リポジトリの [アクション] タブで確認できます。各実行には「Automatic Dependency Submission (Gradle)」というラベルが付けられ、出力にはアクションが API に送信した JSON ペイロードが含まれます。
.NET プロジェクト
.NETの自動送信アクションでは、依存関係検出のエンジンとして open source component-detection プロジェクトが使用されます。 .NET 8.x、9.x、および 10.x がサポートされています。 .NET自動送信は、リポジトリのdependabot.ymlでnugetがpackage-ecosystemとして定義されている場合、またはリポジトリのルートディレクトリにサポートされているマニフェストファイルがある場合に実行されます。 サポートされているマニフェスト ファイルには、.sln、.csproj、packages.config、.vbproj、.vcxproj、.fsproj などがあります。
Python プロジェクト
Pythonは、基になるグラフ生成エンジンとして open source component-detection プロジェクトを使用します。 Pythonの自動送信アクションは、リポジトリのルート ディレクトリに requirements.txt ファイルがある場合にのみ実行されます。 自動送信Pythonプライベート パッケージは現在サポートされていません。requirements.txt で参照されているパッケージが一般公開されていない場合、自動送信アクションは失敗します。
メモ
このアクションでは、actions/setup-python を使用してPythonをインストールします。 リポジトリに.python-versionファイルを含める必要があります。これにより、インストールするPythonバージョンを指定します。