依存関係のバージョン更新について
Dependabotバージョンアップデート を有効にするには、リポジトリの .github ディレクトリにある dependabot.yml 構成ファイルをチェックします。 すると、Dependabot は設定した依存関係を最新の状態に保つためにプルリクエストを発行します。 更新するパッケージマネージャーの依存関係ごとに、パッケージマニフェストファイルの場所と、それらのファイルにリストされている依存関係の更新をチェックする頻度を指定する必要があります。 セキュリティ更新の有効化については、「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はそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しい情報については「Organizatonのためのセキュリティ及び分析設定の管理」を参照してください。 リポジトリのdependabot.yml設定ファイル中で、プライベートリポジトリへのアクセスを設定できます。 詳しい情報については、「依存関係の更新の設定オプション 」を参照してください。 さらに、 Dependabot はすべてのパッケージマネージャーに対して、プライべートな GitHub 依存関係をサポートしません。 For more information, see "About Dependabot version updates" and "GitHub language support."
Dependabotバージョンアップデート を有効化する
- dependabot.yml 設定ファイルを作成します。詳しい情報については、「依存関係の更新の設定オプション」を参照してください。
versionを追加します。- プライベートレジストリに依存関係がある場合、必要に応じて認証情報を含む
registriesセクションを追加します。 updatesセクションを追加し、Dependabot に監視させるパッケージマネージャーごとにエントリを追加します。- パッケージマネージャーごとに、以下を使用します。
package-ecosystem: パッケージマネージャーを指定します。directory: マニフェストまたはその他の定義ファイルの場所を指定します。schedule.interval: 新しいバージョンをチェックする頻度を指定します。
- リポジトリ内の .github ディレクトリにある
dependabot.yml設定ファイルを確認します。
dependabot.ymlファイルの例
下記のサンプルの dependabot.yml ファイルは、2 つのパッケージマネージャー (npm と Docker) のバージョン更新を設定しています。 このファイルがチェックインされると、Dependabot が、デフォルトブランチのマニフェストファイルで古い依存関係がないかをチェックします。 古い依存関係が見つかった場合、デフォルトブランチに対してプルリクエストを発行して依存関係を更新します。
# 2 つのパッケージマネージャーの最低限の設定を含む
# 基本的な dependabot.yml ファイル
version: 2
updates:
# npm のバージョン更新を有効にする
- package-ecosystem: "npm"
# 「root」ディレクトリで「package.json」と「lock」ファイルを探す
directory: "/"
# npm レジストリの更新を毎日(平日)チェックする
schedule:
interval: "daily"
# Docker のバージョン更新を有効にする
- package-ecosystem: "docker"
# 「root」ディレクトリで「Dockerfile」を探す
directory: "/"
# 週に 1 回更新を確認する
schedule:
interval: "weekly"
上記の例では、Docker の依存関係が非常に古い場合、依存関係が最新になるまで daily(毎日)のスケジュールで開始し、その後、毎週のスケジュールに戻すことができます。
フォークのバージョン更新を有効にする
フォークでバージョン更新を有効にする場合は、追加の手順があります。 dependabot.yml 設定ファイルが存在する場合、バージョン更新はフォークで自動的に有効になりません。 これにより、フォークの所有者は、dependabot.yml 設定ファイルを含む変更を元のリポジトリからプルするときに、意図せずバージョン更新を有効にすることがなくなります。
フォークでは、Dependabot を明示的に有効にする必要もあります。
- GitHubで、リポジトリのメインページにアクセスしてください。
- リポジトリ名の下で Insights(インサイト)をクリックしてください。

- 左のサイドバーでDependency graph(依存関係グラフ)をクリックしてください。

- "Dependency graph(依存関係グラフ)"の下で、Dependabotをクリックしてください。

- [Enable Dependabot] で、[Enable Dependabot] をクリックします。
バージョン更新のステータスを確認する
バージョン更新を有効にすると、リポジトリの依存関係グラフに新しい Dependabot タブが表示されます。 このタブには、Dependabot が監視するように設定されているパッケージマネージャーと、Dependabot が最後に新しいバージョンをチェックした日時が表示されます。
![[Repository Insights] タブ、[Dependency graph]、[Dependabot] タブ](/web/20210706092142im_/https://docs.github.com/assets/images/help/dependabot/dependabot-tab-view-beta.png)
詳しい情報については、「バージョン更新用に設定された依存関係を一覧表示する 」を参照してください。
Dependabotバージョンアップデート を無効にする
リポジトリから dependabot.yml ファイルを削除することで、バージョン更新を完全に無効にすることができます。 通常、1 つ以上の依存関係やパッケージマネージャーの更新を一時的に無効にする必要がある場合があります。
- パッケージマネージャー:
open-pull-requests-limit: 0を設定するか、設定ファイル内で関連するpackage-ecosystemでコメントアウトして無効にします。 - 特定の依存関係: 更新から除外するパッケージまたはアプリケーションの
ignore属性を追加して無効にします。
依存関係を無効にすると、ワイルドカードを使用して、関連する一連のライブラリを照合できます。 除外するバージョンを指定することもできます。 これは、ライブラリの更新をブロックする必要がある場合や、API の重大な変更をサポートするために作業を保留する必要があるが、使用するバージョンのセキュリティ修正を取得する場合に特に便利です。
一部の依存関係のバージョン更新を無効にする例
以下の dependabot.yml ファイルの例には、一部の依存関係の更新を無効にし、他の更新を続行できるようにするさまざまな方法が含まれています。
# dependabot.yml file with updates
# disabled for Docker and limited for npm
version: 2
updates:
# Configuration for Dockerfile
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
# Disable all pull requests for Docker dependencies
open-pull-requests-limit: 0
# Configuration for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
ignore:
# Ignore updates to packages that start with 'aws'
# Wildcards match zero or more arbitrary characters
- dependency-name: "aws*"
# Ignore some updates to the 'express' package
- dependency-name: "express"
# Ignore only new versions for 4.x and 5.x
versions: ["4.x", "5.x"]
# For all packages, ignore all patch updates
- dependency-name: "*"
update-types: ["version-update:semver-patch"]
既存の無視設定の確認に関する詳細については、「依存関係の更新の設定オプション」を参照してください。