依存関係のバージョン更新について
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.ymlファイルの設定オプション」を参照してください。 さらに、 Dependabot はすべてのパッケージマネージャーに対して、プライべートな GitHub 依存関係をサポートしません。 詳しい情報については「Dependabotのバージョン更新について」及びGitHubの言語サポート」を参照してください。
Dependabotバージョンアップデート を有効化する
- dependabot.yml 設定ファイルを作成します。 詳しい情報については「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.comで、リポジトリのメインページにアクセスしてください。
- リポジトリ名の下で Insights(インサイト)をクリックしてください。
- 左のサイドバーでDependency graph(依存関係グラフ)をクリックしてください。
- "Dependency graph(依存関係グラフ)"の下で、Dependabotをクリックしてください。
- [Enable Dependabot] で、[Enable Dependabot] をクリックします。
バージョン更新のステータスを確認する
バージョンアップデートを有効にすると、リポジトリの依存関係グラフにDependabot タブが展開されます。 このタブには、Dependabot が監視するように設定されているパッケージマネージャーと、Dependabot が最後に新しいバージョンをチェックした日時が表示されます。
詳しい情報については、「バージョン更新用に設定された依存関係を一覧表示する 」を参照してください。
Dependabotバージョンアップデート を無効にする
リポジトリから dependabot.yml ファイルを削除することで、バージョン更新を完全に無効にすることができます。 通常、1 つ以上の依存関係やパッケージマネージャーの更新を一時的に無効にする必要がある場合があります。
- パッケージマネージャー:
open-pull-requests-limit: 0
を設定するか、設定ファイル内で関連するpackage-ecosystem
でコメントアウトして無効にします。 - 特定の依存関係: 更新から除外するパッケージまたはアプリケーションの
ignore
属性を追加して無効にします。
依存関係を無効にすると、ワイルドカードを使用して、関連する一連のライブラリを照合できます。 除外するバージョンを指定することもできます。 これは、ライブラリの更新をブロックする必要がある場合や、API の重大な変更をサポートするために作業を保留する必要があるが、使用するバージョンのセキュリティ修正を取得する場合に特に便利です。
一部の依存関係のバージョン更新を無効にする例
以下の dependabot.yml ファイルの例には、一部の依存関係の更新を無効にし、他の更新を続行できるようにするさまざまな方法が含まれています。
# 更新を伴うdependabot.ymlファイル
# Dockerでは無効であり、npmでは限定
version: 2
updates:
# Dockerfileの設定
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
# Dockerの依存関係ではすべてのPull Requestを無効化
open-pull-requests-limit: 0
# npmの設定
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
ignore:
# 'aws'で始まるパッケージの更新は無視
# ワイルドカードは0個以上の任意のキャラクタにマッチ
- dependency-name: "aws*"
# 'express'パッケージに対するいくつかの更新を無視
- dependency-name: "express"
# 4.x及び5.xの新バージョンのみを無視
versions: ["4.x", "5.x"]
# すべてのパッケージですべてのパッチアップデートは無視
- dependency-name: "*"
update-types: ["version-update:semver-patch"]
既存の無視設定の確認に関する詳しい情報については、「依存関係のdependabot.ymlファイルの設定オプション」を参照してください。