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