Dependabot version updates について
Dependabot は、依存関係を維持する手間を省きます。 これを使用して、リポジトリが依存するパッケージおよびアプリケーションの最新リリースに自動的に対応できるようにすることができます。
設定ファイルをリポジトリにチェックインすることにより、Dependabot version updates を有効化します。 設定ファイルは、リポジトリに保存されているマニフェストまたは他のパッケージ定義ファイルの場所を指定します。 Dependabot はこの情報を使用して、古いパッケージとアプリケーションをチェックします。 Dependabot は、依存関係のセマンティックバージョニング(semver)を調べて、そのバージョンへの更新の必要性を判断することにより、依存関係の新しいバージョンの有無を決定します。 特定のパッケージマネージャーでは、Dependabot version updates もベンダをサポートしています。 ベンダ (またはキャッシュ) された依存関係は、マニフェストで参照されるのではなく、リポジトリ内の特定のディレクトリにチェックインされる依存関係です。 パッケージサーバーが利用できない場合でも、ビルド時にベンダ依存関係を利用できます。 Dependabot version updates は、ベンダの依存関係をチェックして新しいバージョンを確認し、必要に応じて更新するように設定できます。
Dependabot が古い依存関係を特定すると、プルリクエストを発行して、マニフェストを依存関係の最新バージョンに更新します。 ベンダーの依存関係の場合、Dependabot はプルリクエストを生成して、古い依存関係を新しいバージョンに直接置き換えます。 テストに合格したことを確認し、プルリクエストの概要に含まれている変更履歴とリリースノートを確認して、マージします。 詳しい情報については、「バージョン更新の有効化と無効化」を参照してください。
セキュリティアップデートを有効にすると、Dependabot はプルリクエストを発行し、脆弱性のある依存関係を更新します。 詳しい情報については、「Dependabot security updates について」を参照してください。
DependabotがPull Requestを起こす場合、それらのPull Requestはセキュリティもしくはバージョンアップデートです。
- Dependabot security updatesは、既知の脆弱性についての依存関係の更新を支援する自動化されたPull Requestです。
- Dependabot version updatesは、依存関係が脆弱性を持たない場合でも更新されているようにする、自動化されたPull Requestです。 バージョンアップデートの状態をチェックするには、リポジトリのInsights(インサイト)タブ、続いてDependency Graph(依存関係グラフ)、そしてDependabotにアクセスしてください。
Dependabot及びすべての関連する機能は、GitHubの利用規約でカバーされています。
Dependabot のプルリクエストの頻度
設定ファイルで、新しいバージョンの各エコシステムをチェックする頻度を、毎日、毎週、毎月の中から指定します。
最初にバージョンアップデートを有効にすると、古くなった依存関係が大量にあり、中には最新バージョンまでにいくつものバージョンが存在しているものもあるかもしれません。 Dependabotは、有効化されるとすぐに古くなった依存関係をチェックします。 設定が更新するマニフェストファイルの数に応じて、設定ファイルの追加後数分のうちに、バージョンアップデートの新しいPull Requestが発行されるかもしれません。 Dependabotは、設定ファイルに対するその後の変更に対しても更新を実行します。
Dependabotは、アップデートの失敗後にマニフェストファイルを変更した際にもPull Requestを作成することがあります。 これは、アップデート失敗の原因となった依存関係の削除などのマニフェストへの変更によって、新たにトリガーされたアップデートが成功するかもしれないためです。
Pull Requestを管理可能でレビューしやすく保つために、Dependabotは依存関係を最新バージョンにし始めるためのPull Requestを最大で5つまで発行します。 次にスケジュールされているアップデートの前にこれらの最初のPull Requestの一部をマージした場合、残りのPull Requestは上限まで次のアップデート時にオープンとなります。 open-pull-requests-limit
設定オプションを設定することによっても、オープンなPull Requestの最大数を変更できます。
セキュリティアップデートを有効にした場合、セキュリティアップデートの追加に対するプルリクエストが表示されることがあります。 これらは、デフォルトブランチへの依存関係に対する Dependabot アラートによってトリガーされます。 Dependabot はプルリクエストを自動的に生成し、脆弱性のある依存関係を更新します。
サポートされているリポジトリとエコシステム
サポートされているパッケージマネージャーのいずれかの依存関係マニフェストまたはロックファイルを含むリポジトリのバージョン更新を設定できます。 一部のパッケージマネージャーでは、依存関係のベンダを設定することもできます。 詳しい情報については、「依存関係の更新の設定オプション 」を参照してください。
セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しい情報については「Organizatonのためのセキュリティ及び分析設定の管理」を参照してください。 リポジトリのdependabot.yml設定ファイル中で、プライベートリポジトリへのアクセスを設定できます。 詳しい情報については、「依存関係の更新の設定オプション 」を参照してください。
Dependabot は、すべてのパッケージマネージャーに対してプライベートな GitHub 依存関係をサポートしません。 詳細は、以下の表をご覧ください。
以下の表は、各パッケージマネージャについて以下の項目を示しています。
- dependabot.ymlファイル中で使うYAML値
- パッケージマネージャのサポートされているバージョン
- プライベートのGitHubリポジトリあるいはレジストリ内の依存関係がサポートされているか
- ベンダーの依存関係がサポートされているか
パッケージマネージャー | YAML値 | サポートされているバージョン | プライベートリポジトリ | プライベートレジストリ | ベンダー |
---|---|---|---|---|---|
Bundler | bundler | v1, v2 | ✓ | ✓ | |
Cargo | cargo | v1 | ✓ | ✓ | |
Composer | composer | v1, v2 | ✓ | ✓ | |
Docker | docker | v1 | ✓ | ✓ | |
Hex | mix | v1 | ✓ | ||
elm-package | elm | v0.18, v0.19 | ✓ | ✓ | |
Gitサブモジュール | gitsubmodule | N/A (バージョンなし) | ✓ | ✓ | |
GitHub Actions | github-actions | N/A (バージョンなし) | ✓ | ✓ | |
Goモジュール | gomod | v1 | ✓ | ✓ | ✓ |
Gradle | gradle | N/A(バージョンなし)[1] | ✓ | ✓ | |
Maven | maven | N/A(バージョンなし)[2] | ✓ | ✓ | |
npm | npm | v6, v7 | ✓ | ✓ | |
NuGet | nuget | <= 4.8[3] | ✓ | ✓ | |
pip | pip | v20 | ✓ | ||
pipenv | pip | <= 2018.11.26 | ✓ | ||
pip-compile | pip | 5.5.0 | ✓ | ||
poetry | pip | v1 | ✓ | ||
Terraform | terraform | <= 0.11 | ✓ | ✓ | |
yarn | npm | v1 | ✓ | ✓ |
[1] DependabotはGradleを実行しませんが、build.gradle
及びbuild.gradle.kts
(Kotlinのプロジェクトの場合)という2つのファイルの更新はサポートしています。
[2] DependabotはMavenを実行しませんが、pom.xml
ファイルの更新はサポートします。
[3] DependabotはNuGet CLIを実行しませんが、バージョン4.8までのほとんどの機能をサポートします。
pipenv
やpoetry
といったパッケージマネージャでは、pip
のYAML値を使う必要があります。 たとえばPythonの依存関係を管理するのにpoetry
を使っており、Dependabotに新しいバージョンのために依存関係のマニフェストファイルをモニターさせたい場合は、dependabot.ymlファイル中でpackage-ecosystem: "pip"
を使ってください。
リポジトリですでに依存関係管理にインテグレーションを使用している場合は、Dependabot を有効にする前にそれを無効にする必要があります。 詳しい情報については、「インテグレーションについて」を参照してください。
Dependabot バージョン更新の通知について
GitHub で通知をフィルタして、Dependabot バージョン更新を表示できます。 詳しい情報については「インボックスからの通知の管理」を参照してください。