Skip to main content

依存関係の自動送信

自動依存関係の送信に関するネットワーク アクセス要件、トラブルシューティング、エコシステム固有の動作。

セルフホステッド ランナーのネットワーク アクセスを構成する

ファイアウォール内で外向きのインターネットアクセスが制限されている環境でセルフホステッドランナーを運用する場合、依存関係の自動送信のために特定のURLを許可リスト(ホワイトリスト)に追加する必要があります。 必要な URL は、リポジトリが使用するエコシステムによって異なります。

すべてのエコシステムに必要な URL

すべての自動依存関係送信ワークフローには、次の URL が必要です。

  • https://github.com— GitHub へのアクセスとアクションのダウンロードに必要です。
  • https://api.github.com— GitHub API アクセスに必要です。
  • https://*.githubusercontent.com—アクションのソース コードとリリース ( raw.githubusercontent.comgithub-releases.githubusercontent.comobjects.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ホスト型より大きなランナー (larger runner)を使用して依存関係の自動送信を行う

          GitHub Team または GitHub Enterprise Cloud ユーザーは、 より大きなランナー (larger runner) を使用して依存関係の自動送信ジョブを実行できます。
  1. Organization レベルで、名前が dependency-submission の大規模ランナーをプロビジョニングします。 詳細については、「 組織への より大きなランナー の追加」を参照してください
  2. リポジトリにランナーへのアクセスを許可します。 詳細については、「リポジトリがより大きなランナー (larger runner)にアクセスできるようにする」を参照してください
  3. [依存関係グラフ] で、[依存関係の自動送信] の横にあるドロップダウン メニューを選択し、[ラベル付きランナーで有効] を選びます。

依存関係の自動送信のトラブルシューティング

依存関係の自動送信では、ワークフローを高速化するために、Cache アクションを使用して実行間でパッケージのダウンロードをキャッシュするよう最善を尽くします。 セルフホステッド ランナーの場合、このキャッシュを独自のインフラストラクチャ内で管理することもできます。 これを行うには、環境変数 GH_DEPENDENCY_SUBMISSION_SKIP_CACHEtrue に設定して、組み込みキャッシュを無効にできます。 詳しくは、「変数に情報を格納する」をご覧ください。

マニフェストの重複排除

リポジトリでは、依存関係の送信に複数のメソッドを使用できます。これにより、同じパッケージ マニフェストが複数回スキャンされる可能性があり、各スキャンからの出力が異なる可能性があります。 依存関係グラフは重複除去ロジックを使って出力を解析し、各マニフェスト ファイルの最も正確な情報を優先します。

依存関係グラフには、次の優先順位規則が使われ、各マニフェスト ファイルのインスタンスが 1 つだけ表示されます。

  1.        **ユーザー送信**は、通常、成果物のビルド中に作成され、最も情報がそろっているため、最優先されます。
    
    • 異なる detector からの手動スナップショットが複数ある場合、correlator のアルファベット順に並べ替えられ、最初のものが使われます。
    • 同じ検出器を持つ 2 つの相関器がある場合、解決された依存関係はマージされます。 相関子と検出器の詳細については、 依存関係送信用の REST API エンドポイント を参照してください。
  2.        **
           Dependabot グラフ ジョブ** の優先度が 2 番目に高くなります。 
           Dependabotグラフ ジョブが使用可能なエコシステム (現在は Go と Python) では、依存関係の自動送信よりも優先されます。
    
  3.        **自動送信** は、成果物のビルド中にも作成されますが、ユーザーによって送信されないため、次の優先順位を持ちます。
    
  4.        **静的分析結果**は、使用できるデータが他にない場合に使われます。
    

パッケージ エコシステム別の情報

Maven プロジェクト

Maven プロジェクトの場合、依存関係の自動送信では、Maven Dependency Tree Dependency Submission のopen sourceフォークが実行されます。 フォークを使用すると、 GitHub がアップストリーム リポジトリと同期し続け、自動送信にのみ適用される変更を維持できます。 このフォークのソースは advanced-security/maven-dependency-submission-action で確認できます。

リポジトリの依存関係が正確でないように見える場合は、最後に依存関係グラフがビルドされた時刻のタイムスタンプが、pom.xml ファイルへの最後の変更と一致しているかを確認してください。 タイムスタンプは、リポジトリの [ Dependabot ] タブのアラートのテーブルに表示されます。 pom.xml 更新するコミットをプッシュすると、依存関係ツリー送信アクションの新しい実行がトリガーされ、そのリポジトリの依存関係グラフが強制的に再構築されます。

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.ymlnugetpackage-ecosystemとして定義されている場合、またはリポジトリのルートディレクトリにサポートされているマニフェストファイルがある場合に実行されます。 サポートされているマニフェスト ファイルには、.sln.csprojpackages.config.vbproj.vcxproj.fsproj などがあります。

Python プロジェクト

依存関係グラフが有効になっている Python リポジトリでは、 Dependabot グラフ ジョブを使用して依存関係グラフを生成します。 Dependabot グラフ ジョブは自動依存関係の送信よりも優先され、以下で説明する自動提出ワークフローは Python プロジェクトでは実行されなくなります。 詳しくは、「依存関係グラフが依存関係を認識する方法」をご覧ください。

Python の依存関係の自動送信では、基になるグラフ生成エンジンとしてオープン ソース コンポーネント検出 プロジェクトが使用されます。 自動送信アクションは、リポジトリのルート ディレクトリに requirements.txt ファイルがある場合にのみ実行されます。 自動送信Pythonプライベート パッケージは現在サポートされていません。requirements.txt で参照されているパッケージが一般公開されていない場合、自動送信アクションは失敗します。

メモ

このアクションでは、actions/setup-python を使用してPythonをインストールします。 リポジトリに.python-versionファイルを必ず含め、インストールするPythonのバージョンを指定してください。