Dependabot エラーについて
Dependabot は、依存関係を更新するPull Requestを生成します。 リポジトリの設定によっては、Dependabot がバージョン更新やセキュリティアップデートのPull Requestを発行する場合があります。 これらのPull Requestは、他のPull Requestと同じ方法で管理しますが、追加のコマンドもいくつか用意されています。 Dependabot 依存関係の更新を有効にする方法については、「Dependabotセキュリティアップデート を構成する」および「バージョン更新の有効化と無効化」を参照してください。
何らかが Dependabot によるプルリクエストの発行を妨げる場合、エラーとして報告されます。
Dependabotセキュリティアップデート でエラーを調査する
Dependabot が Dependabot アラートを修正するためのプルリクエストの作成をブロックされると、アラートにエラーメッセージを投稿します。 Dependabotアラート ビューには、未解決のアラートのリストが表示されます。 アラートビューにアクセスするには、リポジトリの [Security] タブで [Dependabotアラート] をクリックします。 脆弱性のある依存関係を修正するプルリクエストが生成された場合、アラートにはそのプルリクエストへのリンクが含まれます。
アラートにプルリクエストリンクがない理由は 3 つあります。
- Dependabotセキュリティアップデート がリポジトリに対して有効になっていない。
- アラートが、ロックファイルで明示的に定義されていない間接的または推移的な依存関係に対するものである。
- エラーにより Dependabot のプルリクエストの作成がブロックされました。
エラーによって Dependabot によるプルリクエストの作成がブロックされた場合は、アラートをクリックしてエラーの詳細を表示できます。
Dependabotバージョンアップデート でエラーを調査する
Dependabot がエコシステムの依存関係を更新するためのプルリクエストの作成をブロックされると、マニフェストファイルにエラーアイコンを投稿します。 Dependabot によって管理されるマニフェストファイルは、[Dependabot] タブに一覧表示されます。 このタブにアクセスするには、リポジトリの [Insights] タブで [Dependency graph] をクリックし、[Dependabot] タブをクリックします。
マニフェストファイルのログファイルを表示するには、[Last checked TIME ago] リンクをクリックします。 エラー記号(上のスクリーンショットの Maven など)で示されているマニフェストのログファイルを表示すると、エラーも表示されます。
Dependabot エラーを理解する
セキュリティアップデートのプルリクエストは、脆弱性のある依存関係を、脆弱性の修正を含む最小バージョンにアップグレードします。 対照的に、バージョン更新のプルリクエストは、パッケージマニフェストおよび Dependabot 設定ファイルで許可されている最新バージョンに依存関係をアップグレードするように動作します。 したがって、一部のエラーは 1 つの種類の更新に固有になります。
Dependabot が DEPENDENCY を脆弱でないバージョンに更新できない
セキュリティアップデートのみ。 Dependabot は、このリポジトリの依存関係グラフの他の依存関係を壊さずに、脆弱性のある依存関係を安全なバージョンに更新するためのプルリクエストを作成することはできません。
依存関係を含むすべてのアプリケーションには、依存関係グラフ、つまり、アプリケーションが直接または間接的に依存するすべてのパッケージバージョンの有向非巡回グラフがあります。 依存関係が更新されるたびに、このグラフを解決する必要があります。解決しない場合、アプリケーションがビルドされません。 npm や RubyGems のように、エコシステムに深く複雑な依存関係グラフがある場合、エコシステム全体をアップグレードせずに単一の依存関係をアップグレードすることは不可能な場合があります。
この問題を回避する最善策としては、たとえばバージョン更新を有効化するなどして、最新のリリースバージョンで最新の状態に保つことです。 これにより、依存関係グラフを壊さない単純なアップグレードで 1 つの依存関係の脆弱性を解決できる可能性が高くなります。 詳しい情報については、「バージョン更新の有効化と無効化」を参照してください。
最新バージョンのオープンプルリクエストがすでに存在するため、Dependabot を必要なバージョンに更新できない
セキュリティアップデートのみ。 Dependabot は、このリポジトリの依存関係グラフの他の依存関係を壊さずに、脆弱性のある依存関係を安全なバージョンに更新するためのプルリクエストを作成することはできません。 このエラーは、単一の依存関係で脆弱性が検出され、依存関係を最新バージョンに更新するためのオープンプルリクエストがすでに存在する場合に表示されます。
オープンプルリクエストを確認して、変更が安全であると確信したらすぐにマージするか、そのプルリクエストをクローズして新しいセキュリティアップデートプルリクエストをトリガーする、という 2 つのオプションがあります。 詳しい情報については、「Dependabot のプルリクエストを手動でトリガーする」を参照してください。
Dependabot が更新中にタイムアウトした
Dependabot は、必要な更新を評価してプルリクエストを準備するために許可された最大時間よりも長く時間を要しました。 このエラーは通常、多くのマニフェストファイルを含む大規模なリポジトリでのみ発生します。たとえば、数百の package.json ファイルを含む npm や yarn monorepo プロジェクトなどです。 Composer エコシステムの更新も評価に時間がかかり、タイムアウトする可能性があります。
これは対処が難しいエラーです。 バージョン更新がタイムアウトした場合は、allow
パラメーターを使用して更新する最も重要な依存関係を指定するか、または、ignore
パラメーターを使用して更新から一部の依存関係を除外できます。 設定を更新すると、Dependabot がバージョンの更新を確認し、利用可能な時間内にプルリクエストを生成できます。
セキュリティアップデートがタイムアウトする場合、たとえばバージョン更新を有効にするなどして依存関係を最新に保つことで、タイムアウトが発生する可能性を減らすことができます。 詳しい情報については、「バージョン更新の有効化と無効化」を参照してください。
Dependabot で追加のプルリクエストをオープンできない
Dependabot が生成するオープンプルリクエスト数には制限があります。 上限に達すると、新しいプルリクエストはオープンされず、このエラーが報告されます。 エラーを解決する最善策として、複数のオープンプルリクエストを確認してマージします。
セキュリティアップデートとバージョン更新のプルリクエストには個別の制限があるため、オープンなバージョン更新のプルリクエストがセキュリティアップデートのプルリクエストの作成をブロックすることはできません。 セキュリティアップデートのプルリクエストの上限は 10 件です。 デフォルトではバージョン更新の上限は 5 件ですが、設定ファイルの open-pull-requests-limit
パラメータを使用して変更できます。 詳しい情報については、「依存関係の更新の設定オプション 」を参照してください。
このエラーを解決する最善策として、既存のプルリクエストの一部をマージまたはクローズして、新しいプルリクエストを手動でトリガーします。 詳しい情報については、「Dependabot のプルリクエストを手動でトリガーする」を参照してください。
Dependabot が依存関係を解決またはアクセスできない
Dependabot がリポジトリで依存関係のリファレンスを更新する必要があるかどうかを確認しようとしたが、1 つ以上のリファレンスファイルにアクセスできない場合、操作は失敗し、「Dependabot は LANGUAGE 依存関係ファイルを解決できません」というエラーメッセージが表示されます。 API エラータイプは git_dependencies_not_reachable
です。
同様に、Dependabot が依存関係が存在するプライベートパッケージレジストリにアクセスできない場合、次のエラーのいずれかが生成されます。
- 「Dependabot はプライベートパッケージレジストリの依存関係に到達できません」
(API エラータイプ:private_source_not_reachable
) - 「Dependabot はプライベートパッケージレジストリを認証できません」
(API エラータイプ:private_source_authentication_failure
) - 「プライベートパッケージレジストリの待機中に Dependabot がタイムアウトしました」
(API エラータイプ:private_source_timed_out
) - 「Dependabot はプライベートパッケージレジストリの証明書を検証できませんでした」
(API エラータイプ:private_source_certificate_failure
)
Dependabot が依存関係のリファレンスを正常に更新できるようにするには、すべての依存関係のリファレンスがアクセス可能な場所でホストされていることを確認してください。
バージョンの更新のみ。セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しい情報については「Organizatonのためのセキュリティ及び分析設定の管理」を参照してください。 リポジトリのdependabot.yml設定ファイル中で、プライベートリポジトリへのアクセスを設定できます。 詳しい情報については、「依存関係の更新の設定オプション 」を参照してください。さらに、Dependabot はすべてのパッケージマネージャーのプライべートな GitHub 依存関係をサポートしているわけではありません。 詳しい情報については、「 Dependabot のバージョン更新について」を参照してください。
Dependabot のプルリクエストを手動でトリガーする
Dependabot のブロックを解除すると、プルリクエストを作成するための新規の試行を手動でトリガーできます。
- セキュリティアップデート — 修正済みのエラーを示す Dependabot アラートを表示します。[Create Dependabot security update] をクリックします。
- バージョン更新 — リポジトリの [Insights] タブで、[Dependency graph] をクリックし、[Dependabot] タブをクリックします。 [Last checked TIME ago] をクリックして、バージョン更新の最終チェック中に Dependabot が生成したログファイルを表示します。 [Check for updates] をクリックします。