この記事では、 dependabot.yml ファイルで使用できる構成オプションのリファレンス情報を提供します。 これらのオプションを使用して、 Dependabot がパッケージ エコシステムを監視し、更新プログラムをスケジュールし、プル要求を作成する方法をカスタマイズします。
dependabot.yml ファイルの概要とそのしくみについては、dependabot.yml ファイルについて を参照してください。
アイコンでマークされているすべてのオプションは、Dependabot が使用されていない限り、target-branch によるセキュリティ更新プログラムの pull request 作成方法も変更します。
必要なキー
| Key | ロケーション | 目的 |
|---|---|---|
version | 最上位レベル | |
Dependabot 使用する構成構文。 Always (常に)2。 | ||
updates | 最上位レベル | 更新する各 package-ecosystem を定義するセクション。 |
package-ecosystem | ||
updates の下 | 更新するパッケージ マネージャーを定義します。 | |
| [ | ||
directories または directory](#directories-or-directory--) | 各 package-ecosystem エントリの下 | 更新対象となるマニフェストまたはその他の定義ファイルの場所を定義します。 |
schedule.interval | 各 package-ecosystem エントリの下 | バージョンの更新プログラム ( daily、 weekly、 monthly、 quarterly、 semiannually、 yearly、または cron) を検索するかどうかを定義します。 |
必要に応じて、最上位レベルの registries キーを含めて、プライベート レジストリのアクセス詳細を定義することもできます。「最上位レベルの registries キー」を参照してください。
# Basic `dependabot.yml` file with
# minimum configuration for two 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"
# Basic `dependabot.yml` file with
# minimum configuration for two 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"
dependabot.yml ファイルの実際の例については、Dependabot独自の構成ファイルを参照してください。
allow
パッケージ エコシステムに対してどの依存関係を保持するかを正確に定義するために使います。 多くの場合、ignore オプションと共に使われます。 例については、「Dependabot が更新する依存関係を制御する」を参照してください。
Dependabot 既定の動作:
- マニフェストで明示的に定義されているすべての依存関係は、バージョンの更新によって最新の状態に保たれます。
- 脆弱な依存関係を持つロック ファイルで定義されているすべての依存関係は、セキュリティ更新プログラムによって更新されます。
allowを指定Dependabot場合は、次のプロセスを使用します。
-
明示的に許可した依存関係をすべてチェックします。
-
次に、無視された依存関係またはバージョンを除外します。
依存関係が
allowとignoreステートメントと一致する場合、依存関係は無視されます。
| パラメーター | 目的 |
|---|---|
dependency-name | 名前が一致する依存関係の更新を許可します。必要に応じて、0 文字以上に一致させるために * を使用できます。 |
dependency-type | 特定の種類の依存関係に対する更新を許可します。 |
dependency-name (allow)
ほとんどのパッケージ マネージャーでは、ロックまたはマニフェスト ファイルで指定された依存関係名と一致する値を定義する必要があります。 一部のシステムには、より複雑な要件があります。
| パッケージ マネージャー | 必要な形式 | Example |
|---|---|---|
| Gradle と Maven | groupId:artifactId | org.kohsuke:github-api |
| イメージ タグ用の Docker | リポジトリのフルネーム | |
<account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc のイメージ タグには、base/foo/bar/ruby を使います。 |
dependency-type (allow)
| 依存関係の種類 | パッケージマネージャーによるサポート | 更新の許可 |
|---|---|---|
direct | All | 明示的に定義されたすべての依存関係。 |
indirect | ||
bundler、 pip、 composer、 cargo、 gomod、 uv | 直接依存関係 (サブ依存関係または推移的依存関係とも呼ばれます) の依存関係。 | |
all | All | 明示的に定義されたすべての依存関係。 |
bundler、pip、composer、cargo、gomod、uvの場合、直接依存関係の依存関係も含まれます。 | ||
production | ||
bundler、 composer、 mix、 maven、 npm、 pip、 uv (すべてのマネージャーではない) | パッケージ マネージャーによって運用依存関係として定義された依存関係のみ。 | |
development | ||
bundler、 composer、 mix、 maven、 npm、 pip、 uv (すべてのマネージャーではない) | パッケージ マネージャーによって開発依存関係として定義された依存関係のみ。 |
assignees
パッケージエコシステムで作成されるすべてのプルリクエストに、個別の担当者を指定します。 例については、「実際のプロセスに合わせて Dependabot pull request をカスタマイズする」を参照してください。
Dependabot 既定の動作:
- Pull request は担当者なしで作成されます。
assignees が定義されている場合:
- バージョン更新のすべてのプル要求は、選択した担当者で作成されます。
- 既定以外のブランチへの更新を定義
target-branch場合を除き、セキュリティ更新プログラムに対するすべてのプル要求は、選択した担当者によって作成されます。
担当者はリポジトリへの書き込みアクセス権限を持っている必要があります。 Organization が所有するリポジトリの場合、読み取りアクセス権を持つ organization メンバーも有効な担当者です。
commit-message
コミット メッセージの形式を定義します。 Pull request のタイトルはコミット メッセージに基づいて記述されるため、この設定は pull request のタイトルにも影響します。 例については、「実際のプロセスに合わせて Dependabot pull request をカスタマイズする」を参照してください。
Dependabot 既定の動作:
- コミット メッセージは、リポジトリで検出されたものと同様のパターンに従います。
commit-message が定義されている場合:
- すべてのコミット メッセージは、定義されたパターンに従います。
- 既定以外の分岐に対する更新を定義
target-branch場合を除き、すべてのコミット メッセージは定義されたパターンに従います。
| パラメーター | 目的 |
|---|---|
prefix | すべてのコミット メッセージと pull request のタイトルのプレフィックスを定義します。 |
prefix-development | サポートされているシステム上で、Development 依存関係グループ内の依存関係を更新するコミットに使う別のプレフィックスを定義します。 |
include | コミット メッセージのプレフィックスの後にその他の情報を入力します。 |
ヒント
グループ化された更新に対して pull request が生成されると、ブランチ名と pull request のタイトルはグループ IDENTIFIER によって定義されます。「groups」を参照してください。
prefix
prefix-developmentも定義されていない場合、すべてのコミット メッセージに使われます。- 値は最大 50 文字まで使用できます。
- Dependabot は、値が文字、数字、閉じ丸括弧、または閉じ角括弧で終わるときに、メインのコミットメッセージを追加する前に、プレフィックスの後にコロンを挿入します。
- コロンの追加を停止するには、値の末尾を空白文字にします。
prefix-development
サポート対象: bundler、 composer、 mix、 maven、 npm、 pip、 uv。
- Development 依存関係グループ内の依存関係を更新するコミット メッセージにのみ使われます。
- それ以外の場合、パラメーターは
prefixパラメーターとまったく同じように動作します。
include
- 値
scopeのみをサポートします - 定義すると、プレフィックスの後にコミットで更新される依存関係の種類 (
depsまたはdeps-dev) が続きます。
cooldown
依存関係の更新のクールダウン期間を定義し、構成可能な日数だけ更新を延期することができます。
cooldown オプションは、_バージョン_更新プログラムでのみ使用でき、_セキュリティ_更新プログラムでは使用できません。
この機能を使用すると、ユーザーは新しいバージョンの更新プログラム Dependabot 生成する頻度をカスタマイズでき、更新頻度をより詳細に制御できます。 例については、「Dependabot バージョン更新プログラムに合わせて pull request の作成を最適化する」を参照してください。
Dependabot 既定の動作:
schedule.intervalで定義したスケジュールに従って更新がチェックされます。- すべての新しいバージョンはすぐに更新対象として検討されます。
**
cooldown
** が定義されている場合:
- Dependabot は、定義された
schedule.interval設定に従って更新プログラムをチェックします。 - Dependabot は、クールダウン設定をチェックします。
- 依存関係の新しいリリースがクールダウン期間内にある場合、 Dependabot はその依存関係のバージョンの更新をスキップします。
- クールダウン期間のない依存関係、またはクールダウン期間を過ぎた依存関係は、構成した
versioning-strategy設定に従って最新バージョンに更新されます。 - 依存関係のクールダウンが終了した後、 Dependabot は、
dependabot.ymlで定義されている標準的な更新戦略に従って依存関係の更新を再開します。
cooldown の構成
以下のオプションを使ってクールダウンの期間を指定できます。
| パラメーター | Description |
|---|---|
default-days | 特定の規則のない依存関係の既定のクールダウン期間 (省略可能)。 |
semver-major-days | |
| メジャー バージョン更新のクールダウン期間 (省略可能。SemVer をサポートするパッケージ マネージャーにのみ適用されます)。 | |
semver-minor-days | |
| マイナー バージョン更新のクールダウン期間 (省略可能。SemVer をサポートするパッケージ マネージャーにのみ適用されます)。 | |
semver-patch-days | |
| パッチ バージョン更新のクールダウン期間 (省略可能。SemVer をサポートするパッケージ マネージャーにのみ適用されます)。 | |
include | |
クールダウンを適用する依存関係のリスト (最大 150 項目)。 ワイルドカードのサポート (*). | |
exclude | |
クールダウンから除外する依存関係のリスト (最大 150 項目)。 ワイルドカードのサポート (*). |
次の表は、 cooldownをサポートするパッケージ マネージャーを示しています。
default-days オプションは、一覧表示されているすべてのパッケージ マネージャーでサポートされますが、semver-major-days、semver-minor-days、およびsemver-patch-daysは示されている場合にのみサポートされます。
| パッケージ マネージャー | サポートされている既定の日数 | SemVer-bump の日数がサポートされています |
|---|---|---|
| Bazel | ||
| Bundler | ||
| Bun | ||
| 貨物 | ||
| Composer | ||
| Conda | ||
| Deno | ||
| Devcontainers | ||
| Docker | ||
| Docker Compose | ||
| Dotnet SDK | ||
| Elm | ||
| GitHub Actions | ||
| Gitsubmodule | ||
| Gomod (Go モジュール) | ||
| Gradle | ||
| Helm | ||
| 16 進 (16 進) | ||
| Julia | ||
| Maven | ||
| NPM と Yarn | ||
| NuGet | ||
| OpenTofu | ||
| pip | ||
| pre-commit | ||
| Pub | ||
| Rust ツールチェーン | ||
| Swift | ||
| Terraform | ||
| UV | ||
| vcpkg |
メモ
semver-major-days、semver-minor-days、または semver-patch-days が定義されていない場合、クールダウンベースの更新では default-days 設定が優先されます。
*
excludeリストは常にincludeリストよりも優先されます。 依存関係が両方のリストに指定されている場合、その依存関係はクールダウンから除外され、すぐに更新されます。
directories または directory
必須オプション。 各パッケージ マネージャー (package.json や Gemfile など) のパッケージ マニフェストの場所を定義するために使用します。 この情報がないと Dependabot バージョン更新のプル要求を作成できません。 例については、「マニフェスト ファイルの複数の場所を定義する」を参照してください。
-
directoryを使って、マニフェストのディレクトリを 1 つ定義します。 -
directoriesを使って、マニフェストの複数のディレクトリで構成されるリストを定義します。 -
ほとんどのパッケージ マネージャーのリポジトリのルートに対して相対的なディレクトリを定義します。
-
GitHub Actionsの場合は、
/値を使用します。 Dependabot では、/.github/workflowsディレクトリとルート ディレクトリからaction.yml/action.yamlファイルが検索されます。
構成ファイル内で複数のブロックを使ってエコシステムの 1 つのターゲット ブランチの更新を定義する必要がある場合は、すべての値が一意であり、定義したディレクトリに重複がないことを確認する必要があります。
メモ
directories キーはグロビングとワイルドカード文字 * をサポートしています。 これらの機能は directory キーではサポートされていません。
enable-beta-ecosystems
現在使用できません。
groups
パッケージ マネージャーによって管理される 1 つ以上の依存関係のセットを作成し、更新プログラムを少数の対象を絞った pull request にグループ化するようにルールを定義します。 例については、「Dependabot バージョン更新プログラムに合わせて pull request の作成を最適化する」を参照してください。
Dependabot 既定の動作:
- バージョン更新とセキュリティ更新の場合、新しいバージョンに更新する必要がある依存関係ごとに 1 つの pull request を開きます。
groups を使ってルールを定義する場合:
- 規則と一致する依存関係のすべての更新は、1 つの pull request に結合されます。
- 依存関係が複数のルールと一致する場合、その依存関係は最初に一致したグループに含まれます。
- 一致するルールがない古い依存関係は、個別の pull request で更新されます。
| パラメーター | 目的 |
|---|---|
IDENTIFIER | ブランチ名と pull request のタイトルで使うグループの識別子を定義します。 この先頭と末尾は文字にする必要があります。また、文字、パイプ |、アンダースコア _、またはハイフン - を含めることができます。 |
applies-to | グループが適用される更新プログラムの種類を指定します。 未定義の場合、既定でバージョン更新プログラムになります。 サポートされる値: version-updates または security-updates。 |
dependency-type | グループを 1 つの種類に制限します。 サポートされる値: development または production。 |
exclude-patterns | グループから依存関係を除外するパターンを 1 つ以上定義します。 |
group-by | 複数のディレクトリ間で更新をグループ化します。 サポートされる値: dependency-name。 |
patterns | 名前が一致する依存関係を含めるパターンを 1 つ以上定義します。 |
update-types | グループを 1 つ以上のセマンティック バージョニング レベルに制限します。 サポートされている値: minor、patch、および major。 |
dependency-type (groups)
サポート: bundler、composer、mix、maven、npm、およびpip。
既定では、グループにはすべての種類の依存関係が含まれます。
- "Development dependency group" に依存関係のみを含めるには、
developmentを使います。 - "Production dependency group" に依存関係のみを含めるには、
productionを使います。
group-by (groups)
groups.<group-name>.group-byを使用して、monorepo 内Dependabot複数のディレクトリ間で更新をグループ化する方法を指定します。
- 型: 文字列
- 受け入れ可能な値:
dependency-name - 適用対象: 複数のディレクトリが指定された構成
dependency-nameに設定すると、Dependabotは、ディレクトリごとに個別のプル要求ではなく、指定されたすべてのディレクトリにわたって依存関係の更新ごとに 1 つのプル要求を作成します。
ディレクトリ間グループ化の制限事項
group-by: dependency-nameを使用する場合:
- すべてのディレクトリで同じパッケージ エコシステムを使用する必要があります (たとえば、すべての
npmまたはすべてのbundler) - バージョン更新のみに適用されます
- ディレクトリに依存関係に互換性のないバージョン制約がある場合、 Dependabot は個別のプル要求を作成します
group-byの使用例については、Dependabot バージョン更新プログラムに合わせて pull request の作成を最適化する を参照してください。
patterns と exclude-patterns (groups)
どちらのオプションも、依存関係名との一致を定義する際にワイルド カードとして * を使用できます。 依存関係がパターンと除外パターンの両方と一致する場合は、グループから除外されます。
update-types (groups)
既定では、グループにはすべてのセマンティック バージョン (SemVer) 更新プログラムが含まれます。 SemVer は、x.y.z の形式でソフトウェア パッケージのバージョンを定義するための標準として認められています。 Dependabot は、この形式のバージョンが常に major.minor.patch であると想定します。
- パッチ リリースを含めるには、
patchを使います。 - マイナー リリースを含めるには、
minorを使います。 - メジャー リリースを含めるには、
majorを使います。
例については、「Dependabot が更新する依存関係を制御する」を参照してください。
ignore
パッケージ エコシステムに対してどの依存関係を保持するかを正確に定義するには、allow オプションと共に使います。
Dependabot は、許可されているすべての依存関係をチェックし、無視された依存関係またはバージョンを除外します。 許可条件と無視条件の両方で一致する依存関係は、無視されます。 例については、「Dependabot が更新する依存関係を制御する」を参照してください。
Dependabot 既定の動作:
- マニフェストで明示的に定義されているすべての依存関係は、バージョンの更新によって最新の状態に保たれます。
- 脆弱な依存関係を持つロック ファイルで定義されているすべての依存関係は、セキュリティ更新プログラムによって更新されます。
ignoreを使用する場合、Dependabotは次のプロセスを使用します。
-
明示的に許可した依存関係をすべてチェックします。
-
次に、無視された依存関係またはバージョンを除外します。
依存関係が
allowとignoreステートメントと一致する場合、依存関係は無視されます。
| パラメーター | 目的 |
|---|---|
dependency-name | 一致する名前を持つ依存関係の更新を無視します。必要に応じて、ゼロ文字以上に一致する * を使用できます。 |
versions | 特定のバージョンまたはバージョン範囲を無視します。 |
update-types | 1 つ以上のセマンティック バージョニング レベルへの更新プログラムを無視します。 サポートされている値: version-update:semver-patch、version-update:semver-minor、および version-update:semver-major。 |
dependency-name (ignore)
ほとんどのパッケージ マネージャーでは、ロックまたはマニフェスト ファイルで指定された依存関係名と一致する値を定義する必要があります。 一部のシステムには、より複雑な要件があります。
| パッケージ マネージャー | 必要な形式 | Example |
|---|---|---|
| Gradle と Maven | groupId:artifactId | org.kohsuke:github-api |
| イメージ タグ用の Docker | リポジトリのフルネーム | |
<account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc のイメージ タグには、base/foo/bar/ruby を使います。 |
versions (ignore)
特定のバージョンまたはバージョン範囲を無視するために使います。 範囲を定義する場合は、パッケージ マネージャーの標準パターンを使います。 例えば次が挙げられます。
- npm:
^1.0.0を使います - Bundler:
~> 2.0を使います - Docker: Bundler バージョンの構文を使います
- NuGet:
7.*を使います - Maven:
[1.4,)を使用する
例については、「Dependabot が更新する依存関係を制御する」を参照してください。
update-types (ignore)
無視するセマンティック バージョン (SemVer) を指定します。 SemVer は、x.y.z の形式でソフトウェア パッケージのバージョンを定義するための標準として認められています。
Dependabot は、この形式のバージョンが常に major.minor.patchされることを前提としています。
- パッチ リリースを含めるには、
version-update:semver-patchを使います。 - マイナー リリースを含めるには、
version-update:semver-minorを使います。 - メジャー リリースを含めるには、
version-update:semver-majorを使います。
insecure-external-code-execution
サポート: bundler、mix、および pip。
Dependabotが更新中にマニフェストで外部コードを実行できるようにします。 例については、「外部コードの実行を許可する」を参照してください。
Dependabot 既定の動作:
- 1 つ以上のレジストリ Dependabot アクセス権を付与すると、侵害されたパッケージからコードを保護するために外部コードの実行が自動的に無効になります。
- コードを実行できないと、バージョン更新プログラムが失敗する場合があります。
insecure-external-code-execution を許可する場合:
- Dependabot は、バージョン更新プロセスの一環としてマニフェストでコードを実行します。
- コードは、その
updatesの設定に関連付けられたレジストリ内のパッケージ マネージャーにのみアクセスできます。 最上位のregistries構成で定義されているレジストリへのアクセスは許可されません。 - そのため、更新プログラムは成功するはずですが、侵害されたパッケージが資格情報を盗んだり、構成済みのレジストリにアクセスしたりする可能性もあります。
サポートされる値: allow。
labels
パッケージ マネージャーに対して発行されるすべての pull request に独自のラベルを指定します。 例については、「