Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-03-26. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

Dependabot エラーのトラブルシューティング

Dependabot は、依存関係を更新するためのプルリクエストを生成できない場合があります。 エラーをレビューして Dependabot をブロック解除できます。

注: この機能を使用するには、サイト管理者が お使いの GitHub Enterprise Server インスタンスの Dependabot updatesを設定する必要があります。 詳しくは、「エンタープライズ向けの Dependabot の有効化」を参照してください。

Dependabot エラーについて

Dependabot は、依存関係を更新するPull Requestを生成します。 リポジトリの設定によっては、Dependabot がバージョン更新やセキュリティアップデートのPull Requestを発行する場合があります。 これらのPull Requestは、他のPull Requestと同じ方法で管理しますが、追加のコマンドもいくつか用意されています。 Dependabot の依存関係更新プログラムの有効化については、「Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成)」と「Dependabot のバージョン アップデートの設定」を参照してください。

何らかが Dependabot によるプルリクエストの発行を妨げる場合、エラーとして報告されます。

Dependabot security updates でエラーを調査する

Dependabot が Dependabot アラートを修正するためのプルリクエストの作成をブロックされると、アラートにエラーメッセージを投稿します。 Dependabot alerts ビューには、未解決のアラートのリストが表示されます。 アラート ビューにアクセスするには、リポジトリの Security タブで [Dependabot alerts] をクリックします。 脆弱性のある依存関係を修正するプルリクエストが生成された場合、アラートにはそのプルリクエストへのリンクが含まれます。

Dependabot alerts ビューのスクリーンショット。2 つのアラートを確認できます。 1 つのアラートの右側で "#353" というタイトルの pull request のリンクがオレンジ色の枠線で強調表示されています。

アラートに pull request リンクがない理由は、いくつかあります。

  1. Dependabot security updates がリポジトリに対して有効になっていない。
  2. アラートが、ロックファイルで明示的に定義されていない間接的または推移的な依存関係に対するものである。
  3. エラーにより Dependabot のプルリクエストの作成がブロックされました。

エラーによって Dependabot によるプルリクエストの作成がブロックされた場合は、アラートをクリックしてエラーの詳細を表示できます。

Dependabot version updates

でエラーを調査する

Dependabot がエコシステム内の依存関係を更新するためのプル要求の作成をブロックされている場合、 の詳細を確認できます。エラー アイコンはマニフェスト ファイル に投稿されます。

Dependabot によって管理されるマニフェスト ファイルの一覧は、[Dependabot] タブに表示されます。このタブにアクセスするには、リポジトリの Insights タブで Dependency graph をクリックし、 [Dependabot] タブをクリックします。

Dependabot ビューのスクリーンショット。 アラート アイコンと、"前回の確認は 10 時間前" というリンクがオレンジ色の枠線で強調表示されています。

マニフェスト ファイルのログを表示するには、 [Last checked TIME ago](最後のチェックは <時間> 前) リンクをクリックし、 View logs をクリックします。

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 をクローズします。 ただし、まれな状況では、pull request が開いたままとなる可能性があります。 依存関係の更新を手動でコミットし、その同じ更新プログラムの pull request がまだ開いている場合は、pull request のコメントで次のいずれかのコマンドを使用できます。

  • @dependabot recreate、または
  • @dependabot rebase

どちらのコメントでも、Dependabot を起動し、依存関係がアップグレードできなくなったかどうか、脆弱性があるかどうかをチェックします。 Dependabot が pull request が不要になったと検出した場合、そのケースに関する pull request を閉じます。

Dependabot のコメント コマンドについて詳しくは、「依存関係の更新に関するPull Requestを管理する」をご覧ください。

最新バージョンのオープンプルリクエストがすでに存在するため、Dependabot を必要なバージョンに更新できない

セキュリティ アップデートのみ。 この依存関係を更新するための pull request は既に開かれているため、Dependabot で脆弱性のある依存関係を安全なバージョンに更新するための pull request は作成されません。 このエラーは、単一の依存関係で脆弱性が検出され、依存関係を最新バージョンに更新するためのオープンプルリクエストがすでに存在する場合に表示されます。

オープンプルリクエストを確認して、変更が安全であると確信したらすぐにマージするか、そのプルリクエストをクローズして新しいセキュリティアップデートプルリクエストをトリガーする、という 2 つのオプションがあります。 詳細については、「Dependabot のプル リクエストを手動でトリガーする」を参照してください。

DEPENDENCY が脆弱ではなくなったため、セキュリティ更新プログラムは必要ありません

セキュリティ アップデートのみ。 Dependabot では、 pull request を閉じて、脆弱ではない、または脆弱ではなくなった依存関係を更新することはできません。 このエラーは、依存関係グラフ データが古いときや、依存関係の特定のバージョンが脆弱な場合に依存関係グラフと Dependabot が一致しないときに発生する可能性があります。

この問題をデバッグするには、まずリポジトリの依存関係グラフを調べ、依存関係で検出されたバージョンを確認し、識別されたバージョンがリポジトリで使用されているものと一致するかどうかをチェックすることをお勧めします。

依存関係グラフ データが古くなっていると思われる場合は、リポジトリの依存関係グラフを手動で更新するか、依存関係情報をさらに調査する必要があります。 詳しくは、「依存関係グラフのトラブルシューティング」を参照してください。

依存関係のバージョンが脆弱でなくなったかどうかを確認できる場合は、Dependabot pull request を閉じてください。

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に付与できます。 詳しくは、「組織のセキュリティおよび分析設定を管理する」を参照してください。 リポジトリの 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 によって生成されたログ ファイルを表示します。 [更新プログラムのチェック] をクリックします。

参考資料