Dependabotバージョンアップデートについて
Dependabot は、依存関係を維持する手間を省きます。 これを使用して、リポジトリが依存するパッケージおよびアプリケーションの最新リリースに自動的に対応できるようにすることができます。
a _dependabot.yml_configurationファイルをリポジトリにチェックインすることにより、Dependabotバージョンアップデート を有効化します。 設定ファイルは、リポジトリに保存されているマニフェストまたは他のパッケージ定義ファイルの場所を指定します。 Dependabot はこの情報を使用して、古いパッケージとアプリケーションをチェックします。 Dependabot は、依存関係のセマンティックバージョニング(semver)を調べて、そのバージョンへの更新の必要性を判断することにより、依存関係の新しいバージョンの有無を決定します。 特定のパッケージマネージャーでは、Dependabotバージョンアップデート もベンダをサポートしています。 ベンダ (またはキャッシュ) された依存関係は、マニフェストで参照されるのではなく、リポジトリ内の特定のディレクトリにチェックインされる依存関係です。 パッケージサーバーが利用できない場合でも、ビルド時にベンダ依存関係を利用できます。 Dependabotバージョンアップデート は、ベンダの依存関係をチェックして新しいバージョンを確認し、必要に応じて更新するように設定できます。
Dependabot が古い依存関係を特定すると、プルリクエストを発行して、マニフェストを依存関係の最新バージョンに更新します。 ベンダーの依存関係の場合、Dependabot はプルリクエストを生成して、古い依存関係を新しいバージョンに直接置き換えます。 テストに合格したことを確認し、プルリクエストの概要に含まれている変更履歴とリリースノートを確認して、マージします。 詳しい情報については「Dependabotのバージョンアップデートの設定」を参照してください。
セキュリティアップデートを有効にすると、Dependabot は脆弱性のある依存関係を更新するPull Requestを起こします。 詳しい情報については、「Dependabotセキュリティアップデート について」を参照してください。
DependabotがPull Requestを起こす場合、それらのPull Requestはセキュリティもしくはバージョンアップデートです。
- Dependabotセキュリティアップデート are automated pull requests that help you update dependencies with known vulnerabilities.
- Dependabotバージョンアップデート are automated pull requests that keep your dependencies updated, even when they don’t have any vulnerabilities. バージョンアップデートの状態をチェックするには、リポジトリのInsights(インサイト)タブ、続いてDependency Graph(依存関係グラフ)、そしてDependabotにアクセスしてください。
Dependabot and all related features are covered by your license agreement. For more information, see "GitHub Enterprise Customer Terms."
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.ymlファイルの設定オプション」を参照してください。
セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しい情報については「Organizatonのためのセキュリティ及び分析設定の管理」を参照してください。 リポジトリのdependabot.yml設定ファイル中で、プライベートリポジトリへのアクセスを設定できます。 詳しい情報については「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.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, v8 | ✓ | ✓ | |
NuGet | nuget | <= 4.8[3] | ✓ | ✓ | |
pip | pip | v21.1.2 | ✓ | ||
pipenv | pip | <= 2021-05-29 | ✓ | ||
pip-compile | pip | 6.1.0 | ✓ | ||
poetry | pip | v1 | ✓ | ||
pub | pub | v2 [4] |
| Terraform | terraform
| >= 0.13, <= 1.0 | ✓ | ✓ | |
| yarn | npm
| v1 | ✓ | ✓ | |
Tip: For package managers such as pipenv
and poetry
, you need to use the pip
YAML value. たとえばPythonの依存関係を管理するのにpoetry
を使っており、Dependabotに新しいバージョンのために依存関係のマニフェストファイルをモニターさせたい場合は、dependabot.ymlファイル中でpackage-ecosystem: "pip"
を使ってください。
[1] Dependabot doesn't run Gradle but supports updates to the following files: build.gradle
, build.gradle.kts
(for Kotlin projects), and files included via the apply
declaration that have dependencies
in the filename. Note that apply
does not support apply to
, recursion, or advanced syntaxes (for example, Kotlin's apply
with mapOf
, filenames defined by property).
[2] DependabotはMavenを実行しませんが、pom.xml
ファイルの更新はサポートします。
[3] DependabotはNuGet CLIを実行しませんが、バージョン4.8までのほとんどの機能をサポートします。
[4] pub
support is currently in beta. Any known limitations are subject to change. Note that Dependabot:
-
Doesn't support updating git dependencies for
pub
. -
Won't perform an update when the version that it tries to update to is ignored, even if an earlier version is available.
For information about configuring your dependabot.yml file for
pub
, see "Enabling support for beta-level ecosystems."
リポジトリですでに依存関係管理にインテグレーションを使用している場合は、Dependabot を有効にする前にそれを無効にする必要があります。 詳しい情報については「インテグレーションについて」を参照してください。
Dependabot バージョン更新の通知について
GitHub上の通知をフィルタリングして、Dependabotが作成したPull Requestの通知を表示させることができます。 詳しい情報については「インボックスからの通知の管理」を参照してください。