メモ
この機能を使用するには、サイト管理者が お使いの GitHub Enterprise Server インスタンスの Dependabot updatesを設定する必要があります。 詳細については、「エンタープライズ向けの Dependabot の有効化」を参照してください。
Enterprise 所有者が Enterprise レベルでポリシーを設定している場合、Dependabot updates を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」をご覧ください。
依存関係のバージョン更新について
リポジトリの .github
ディレクトリに dependabot.yml
構成ファイルをチェックインして、Dependabot version updates を有効にします。 すると、Dependabot は設定した依存関係を最新の状態に保つためにプルリクエストを発行します。 更新するパッケージマネージャーの依存関係ごとに、パッケージマニフェストファイルの場所と、それらのファイルにリストされている依存関係の更新をチェックする頻度を指定する必要があります。 セキュリティ更新プログラムの有効化については、「Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成)」を参照してください。
最初にバージョンアップデートを有効にすると、古くなった依存関係が大量にあり、中には最新バージョンまでにいくつものバージョンが存在しているものもあるかもしれません。 Dependabotは、有効化されるとすぐに古くなった依存関係をチェックします。 設定が更新するマニフェストファイルの数に応じて、設定ファイルの追加後数分のうちに、バージョンアップデートの新しいプルリクウェストが発行されるかもしれません。 Dependabotは、設定ファイルに対するその後の変更に対しても更新を実行します。
プルリクウェストを管理可能でレビューしやすく保つために、Dependabotは依存関係を最新バージョンにし始めるためのプルリクウェストを最大で5つまで発行します。 次にスケジュールされているアップデートの前にこれらの最初のプルリクウェストの一部をマージした場合、残りのプルリクウェストは上限まで次のアップデート時にオープンとなります。 オープンプルリクウェストの最大数は、open-pull-requests-limit
構成オプションを設定することで変更できます。
表示される pull request の数をさらに減らすには、groups
構成オプションを使って、依存関係のセットを (パッケージ エコシステムごとに) グループ化することができます。 次に、Dependabot により、1 つの pull request が生成され、グループ内のできるだけ多くの依存関係が一度で最新バージョンに更新されます。詳しくは、「Dependabot バージョン更新プログラムに合わせて pull request の作成を最適化する」を参照してください。
構成ミスやバージョンに互換性がないために Dependabot の実行に失敗したと表示されることがあります。 実行に 15 回失敗すると、依存関係グラフから更新チェックを手動でトリガーするまで、Dependabot version updates はそれ以降のスケジュールされた実行をスキップします。 Dependabot security updates は、通常どおり、引き続き実行されます。
既定では、マニフェストで明示的に定義されている直接の依存関係のみが、Dependabot version updates によって最新の状態に保たれます。 ロック ファイルで定義されている間接的な依存関係に対する更新を受け取ることができます。 詳しくは、「Dependabot で更新する依存関係を制御する」をご覧ください。
セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しくは、「組織のセキュリティおよび分析設定を管理する」をご覧ください。 リポジトリの dependabot.yml
構成ファイルで、プライベート レジストリへのアクセスを構成できます。 詳しくは、「Dependabot のプライベート レジストリへのアクセスの構成」をご覧ください。 さらに、 Dependabot はすべてのパッケージマネージャーに対して、プライべートな GitHub 依存関係をサポートしません。 詳細については、「Dependabot でサポートされているエコシステムとリポジトリ」および「GitHub 言語サポート」を参照してください。
Dependabot version updates を有効化する
dependabot.yml
構成ファイルをリポジトリにコミットして、Dependabot version updates を有効にします。
-
リポジトリの
.github
ディレクトリにdependabot.yml
構成ファイルを作成します。 次のスニペットを始点として使用することができます。 For information about the options you can use to customize how Dependabot maintains your repositories, see Dependabot オプション リファレンス.YAML # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. version: 2 updates: - package-ecosystem: "" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly"
# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. version: 2 updates: - package-ecosystem: "" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly"
-
version
を追加します。 この鍵は必須です。 このファイルはversion: 2
で始まる必要があります。 -
プライベート レジストリに依存関係がある場合は、必要に応じて、認証情報が含まれている
registries
セクションを追加します。 詳しくは、「Dependabot のプライベート レジストリへのアクセスの構成」をご覧ください。 -
updates
セクションを追加し、Dependabot で監視したい各パッケージ モニターのエントリを追加します。 この鍵は必須です。 これを使用することで、Dependabot がバージョンやプロジェクトの依存性を更新する方法を設定できます。 各エントリは、特定のパッケージマネージャーの更新設定を行います。 詳細については、「Dependabot オプション リファレンス」の「dependabot.yml ファイルについて」を参照してください。 -
パッケージマネージャーごとに、以下を使用します。
package-ecosystem
: パッケージ マネージャーを指定します。 サポートされているパッケージ マネージャーの詳細については、「package-ecosystem
」を参照してください。directories
またはdirectory
。複数のマニフェストまたはその他の定義ファイルの場所を指定します。詳細については、「マニフェスト ファイルの複数の場所を定義する」を参照してください。schedule.interval
: 新しいバージョンをチェックする頻度を指定します。
-
リポジトリの
.github
ディレクトリにある dependabot.yml 構成ファイルを確認します。
dependabot.yml
ファイルの例
次の dependabot.yml
ファイル例では、npm、Docker、GitHub Actions という 3 つのパッケージ マネージャーのバージョン更新プログラムを構成しています。 このファイルがチェックインされると、Dependabot が、デフォルトブランチのマニフェストファイルで古い依存関係がないかをチェックします。 古い依存関係が見つかった場合、デフォルトブランチに対してプルリクエストを発行して依存関係を更新します。
# Basic `dependabot.yml` file with # minimum configuration for three package managers version: 2 updates: # Enable version updates for npm - package-ecosystem: "npm" # Look for `package.json` and `lock` files in the `root` directory directory: "/" # Check the npm registry for updates every day (weekdays) schedule: interval: "daily" # Enable version updates for Docker - package-ecosystem: "docker" # Look for a `Dockerfile` in the `root` directory directory: "/" # Check for updates once a week schedule: interval: "weekly" # Enable version updates for GitHub Actions - package-ecosystem: "github-actions" # Workflow files stored in the default location of `.github/workflows` # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`. directory: "/" schedule: interval: "weekly"
# Basic `dependabot.yml` file with
# minimum configuration for three package managers
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: "npm"
# Look for `package.json` and `lock` files in the `root` directory
directory: "/"
# Check the npm registry for updates every day (weekdays)
schedule:
interval: "daily"
# Enable version updates for Docker
- package-ecosystem: "docker"
# Look for a `Dockerfile` in the `root` directory
directory: "/"
# Check for updates once a week
schedule:
interval: "weekly"
# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
# Workflow files stored in the default location of `.github/workflows`
# You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
directory: "/"
schedule:
interval: "weekly"
上記の例では、Docker の依存関係がとても古い場合、その依存関係が最新の状態になるまで、まずは daily
(毎日) スケジュールを設定して、その後 Weekly (毎週) スケジュールに戻すことができます。
フォークのバージョン更新を有効にする
フォークでバージョン更新を有効にする場合は、追加の手順があります。 dependabot.yml
構成ファイルが存在していると、フォークでのバージョン アップデートが自動的に有効になることはありません。 これにより、元のリポジトリからの dependabot.yml
構成ファイルを含む変更をプルするときに、フォーク所有者が意図せずバージョン アップデートを有効にしてしまうことがなくなります。
フォークでは、Dependabot を明示的に有効にする必要もあります。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
-
サイドバーの [Security] セクションで、[ Advanced Security] をクリックします。
-
[Advanced Security] で、[Dependabot version updates] の右にある [Enable] をクリックし、Dependabot がバージョン更新を開始できるようにします。
バージョン更新のステータスを確認する
バージョン アップデートを有効にすると、リポジトリの依存関係グラフにある [Dependabot] タブが設定されます。 このタブには、Dependabot が監視するように設定されているパッケージマネージャーと、Dependabot が最後に新しいバージョンをチェックした日時が表示されます。
詳しくは、「バージョン更新用に設定された依存関係を一覧表示する」を参照してください。
Dependabot version updates を無効にする
リポジトリから 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: "weekly"
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"]
既存の無視設定の確認について詳しくは、「Dependabot オプション リファレンス」を参照してください。