注: この機能を使用するには、サイト管理者が your GitHub Enterprise Server instanceの Dependabot updatesを設定する必要があります。 詳細については、「企業に対する Dependabot の有効化」を参照してく� さい。
dependabot.yml ファイルについて
Dependabot の構成ファイルである dependabot.yml では、YAML 構文を使います。 YAML を初めて使う� �合、詳しくは「YAML を 5 分で学習する」をご覧く� さい。
このファイルは、リポジトリの .github
ディレクトリに保存する必要があります。 dependabot.yml ファイルを追� または更新すると、バージョン更新の即時チェックがトリガーされます。 詳細と例については、「Dependabot のバージョン アップデートの設定」をご覧く� さい。
セキュリティアップデートに影響するオプションは、次にセキュリティアラートがセキュリティアップデートのためのプルリクエストをトリガーするときにも使用されます。 詳細については、「Dependabot security updates の構成」を参照してく� さい。
dependabot.yml ファイルには、2 つの必� �の最上位キー version
と updates
があります。 必要に応じて、最上位レベルの registries
キーを含めることができます。 このファイルは version: 2
で始まる必要があります。
dependabot.yml ファイルの構成オプション
最上位レベルの updates
キーは必� �です。 これを使用することで、Dependabot がバージョンやプロジェクトの依存性を更新する方法を設定できます。 各エントリは、特定のパッケージマネージャーの更新設定を行います。 次のオプションを使用できます。
オプション | 必� � | セキュリティ更新プログラ� | バージョン アップデート | 説明 |
---|---|---|---|---|
package-ecosystem | X | X | 使用するパッケージマネージャー | |
directory | X | X | パッケージマニフェストの� �所 | |
schedule.interval | X | X | 更新を確認する� �度 | |
allow | x | x | 許可する更新をカスタマイズする | |
assignees | x | X | プルリクエストのアサイン担当者 | |
commit-message | x | x | コミットメッセージの環境設定 | |
ignore | x | x | 特定の依存関係またはバージョンを無視する | |
insecure-external-code-execution | x | マニフェストファイル内でコードの実行を許可または拒否する | ||
labels | x | x | プルリクエストに設定するラベル | |
milestone | X | x | プルリクエストに設定するマイルストーン | |
open-pull-requests-limit | x | x | バージョン更新時のオープンなプルリクエスト数を制限する | |
pull-request-branch-name.separator | x | x | プルリクエストブランチ名の区切り文字を変更する | |
rebase-strategy | x | x | 自動リベースを無効にする | |
registries | x | Dependabot がアクセスできるプライベートリポジトリ | ||
reviewers | x | x | プルリクエストのレビュー担当者 | |
schedule.day | x | 更新を確認する曜日 | ||
schedule.time | x | 更新を確認する時刻 (hh:mm) | ||
schedule.timezone | x | 時刻のタイ� ゾーン(ゾーン識別子) | ||
target-branch | x | プルリクエストを作成するブランチ | ||
vendor | x | ベンダーまたはキャッシュされた依存関係を更新する | ||
versioning-strategy | x | x | マニフェストのバージョン要件の更新方法 |
これらのオプションは、次のようなカテゴリに幅広く適合しています。
- すべての構成に含める必要がある基本的な設定オプション:
package-ecosystem
、directory
、schedule.interval
。 - 更新スケジュールをカスタマイズするためのオプション:
schedule.time
、schedule.timezone
、schedule.day
。 - 更新される依存関係を制御するオプション:
allow
、ignore
、vendor
。 - メタデータを pull request に追� するオプション:
reviewers
、assignees
、labels
、milestone
。 - pull request の動作を変更するオプション:
target-branch
、versioning-strategy
、commit-message
、rebase-strategy
、pull-request-branch-name.separator
。
さらに、open-pull-requests-limit
オプションは、Dependabot で開くことのできるバージョン更新の pull request の最大数を変更します。
注: これらの構成オプションの一部は、脆弱性のあるパッケージ マニフェストのセキュリティ更新のために送信される pull request にも影響を与える可能性があります。
脆弱性のあるパッケージマニフェストのセキュリティアップデートは、デフォルトブランチでのみ発生します。 構成オプションが同じブランチに設定されていて (target-branch
を使っていないかぎり該当します)、脆弱性のあるマニフェストの package-ecosystem
と directory
を指定している� �合、セキュリティ更新の pull request で関連オプションが使われます。
一般に、セキュリティアップデートでは、メタデータの追� や動作の変更など、プルリクエストに影響する設定オプションが使用されます。 セキュリティ更新について詳しくは、「Dependabot security updates を構成する」をご覧く� さい。
package-ecosystem
[必� �] 。 Dependabot で新しいバージョンを監視するパッケージ マネージャーごとに、1 つの package-ecosystem
要� を追� します。 リポジトリには、これらの各パッケージマネージャーの依存関係マニフェストまたはロックファイルも含まれている必要があります。 サポートするパッケージマネージャーに対してベンダリングを有効にする� �合、ベンダリングされた依存関係が必� �ディレクトリに存在する必要があります。 詳しくは、後の「vendor
」をご覧く� さい。
以下の表は、各パッケージマネージャについて以下の� �目を示しています。
- 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 のアクション | github-actions | N/A (バージョンなし) | ✓ | ✓ | |
Go モジュール | gomod | v1 | ✓ | ✓ | ✓ |
Gradle | gradle | N/A (バージョンなし)[2] | ✓ | ✓ | |
Maven | maven | N/A (バージョンなし)[3] | ✓ | ✓ | |
npm | npm | v6、v7、v8 | ✓ | ✓ | |
NuGet | nuget | <= 4.8[4] | ✓ | ✓ | |
pip | pip | v21.1.2 | ✓ | ||
pipenv | pip | <= 2021-05-29 | ✓ | ||
pip-compile | pip | 6.1.0 | ✓ | ||
poetry | pip | v1 | ✓ | ||
Terraform | terraform | >= 0.13、<= 1.2.x | ✓ | ✓ | |
yarn | npm | v1 | ✓ | ✓ |
ヒント: pipenv
や poetry
などのパッケージ マネージャでは、pip
の YAML 値を使う必要があります。 たとえば Python の依存関係を管理するのに poetry
を使っており、Dependabot に新しいバージョンのために依存関係のマニフェスト ファイルをモニターさせたい� �合は、dependabot.yml ファイル中で package-ecosystem: "pip"
を使ってく� さい。
[2] Dependabot では Gradle は実行されませんが、次のファイルの更新がサポートされます: build.gradle
、build.gradle.kts
(Kotlin プロジェクトの� �合)、および apply
宣言を使用して組み込まれた、ファイル名に dependencies
を含むファイル。 apply
では、apply to
、再帰、または高度な構文 (たとえば、ファイル名がプロパティで定義された、Kotlin の mapOf
付き apply
) はサポートされていないことに注意してく� さい。
[3] Dependabot では Maven は実行されませんが、pom.xml
ファイルの更新はサポートされます。
[4] Dependabot では NuGet CLI は実行されませんが、バージョン 4.8 までのほとんどの機能がサポートされます。
# Basic set up for three package managers
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for Composer
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
directory
[必� �] 。 各パッケージ マネージャー (package.json や Gemfile など) のパッケージ マニフェストの� �所を定義する必要があります。 GitHub Actions 以外のすべてのエコシステ� で、リポジトリのルートに対する相対ディレクトリを定義します。 GitHub Actions の� �合、ディレクトリを /
に設定し、.github/workflows
でワークフロー ファイルを確認します。
# Specify location of manifest files for each package manager
version: 2
updates:
- package-ecosystem: "composer"
# Files stored in repository root
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "npm"
# Files stored in `app` directory
directory: "/app"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
# Workflow files stored in the
# default location of `.github/workflows`
directory: "/"
schedule:
interval: "daily"
schedule.interval
[必� �] 。 各パッケージマネージャーに対して、新しいバージョンを確認する� �度を定義する必要があります。 デフォルトでは、Dependabotは設定ファイル中のすべての更新を適用する時間をランダ� に割り当てます。 特定の日時を設定するには、schedule.time
と schedule.timezone
を使うことができます。
daily
— 月曜日から金曜日までのすべての平日に実行します。weekly
— 毎週 1 回実行します。 デフォルトでは月曜日に設定されています。 これを変更するには、schedule.day
を使います。monthly
— 毎月 1 回実行します。 その月の最初の日に設定されています。
# Set update schedule for each package manager
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
- package-ecosystem: "composer"
directory: "/"
schedule:
# Check for updates managed by Composer once a week
interval: "weekly"
注: schedule
では、Dependabot が新しい更新を試みるタイミングを定義します。 た� し、プルリクエストを受け取るタイミングはこれ� けではありません。 更新は、dependabot.yml
ファイルへの変更、更新失敗後のマニフェスト ファイルへの変更、または Dependabot security updates に基づいてトリガーできます。 詳しくは、「Dependabot の pull request の� �度」と「Dependabot security updates について」をご覧く� さい。
allow
デフォルトでは、マニフェストあるいはロックファイルで明示的に定義されたすべての依存関係は、最新の状態に保たれます。 allow
と ignore
を使用して、バージョン アップデートでどの依存関係を維持するかをカスタマイズできます。 Dependabotは許可されたすべての依存関係をチェックし、それから無視された依存関係やバージョンをフィルタリングします。 そのため、allow
と ignore
の両方で一致する依存関係は無視されます。
更新する依存関係をカスタマイズするには、allow
オプションを使います。 これは、バージョン及びセキュリティのどちらのアップデートにも適用されます。 以下のオプションを使用できます。
-
dependency-name
— 名前が一致する依存関係の更新を許可するために使います。必要に応じて、*
を使って 0 個以上の文字と一致させます。 Java の依存関係の� �合、dependency-name
属性の形式はgroupId:artifactId
になります (例:org.kohsuke:github-api
)。 -
dependency-type
— 特定の種類の依存関係の更新を許可するために使います。依存関係の種類 パッケージマネージャーによるサポート 更新の許可 direct
すべて 明示的に定義されたすべての依存関係。 indirect
bundler
,pip
,composer
,cargo
直接依存関係の依存関係 (サブ依存関係、または過渡依存関係とも呼ばれる)。 all
すべて 明示的に定義されたすべての依存関係。 bundler
、pip
、composer
、cargo
の� �合は、直接依存関係の依存関係も。production
bundler
,composer
,mix
,maven
,npm
,pip
"運用依存関係グループ" の依存関係のみ。 development
bundler
,composer
,mix
,maven
,npm
,pip
[Development dependency group] 内の依存関係のみ。
# Use `allow` to specify which dependencies to maintain
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow updates for Lodash
- dependency-name: "lodash"
# Allow updates for React and any packages starting "react"
- dependency-name: "react*"
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow both direct and indirect updates for all packages
- dependency-type: "all"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow only direct updates for
# Django and any packages starting "django"
- dependency-name: "django*"
dependency-type: "direct"
# Allow only production updates for Sphinx
- dependency-name: "sphinx"
dependency-type: "production"
assignees
assignees
を使って、パッケージ マネージャーに対して発行されたすべての pull request の個々の担当者を指定します。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Specify assignees for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Add assignees
assignees:
- "octocat"
commit-message
デフォルトでは、Dependabot はコミットメッセージの設定を検出し、同様のパターンを使用しようとします。 commit-message
オプションを使って、環境設定を明示的に指定します。
サポートされているオプション
注: prefix
と prefix-development
オプションには 15 文字の制限があります。
prefix
では、すべてのコミット メッセージのプレフィックスを指定します。prefix-development
では、Development 依存関係グループ内の依存関係を更新するすべてのコミット メッセージに個別のプレフィックスを指定します。 このオプションの値を指定すると、prefix
は、Production 依存関係グループの依存関係の更新にのみ使われます。 これは、bundler
、composer
、mix
、maven
、npm
、pip
でサポートされていますinclude: "scope"
では、すべてのプレフィックスの後に、コミットで更新される依存関係のリストが続くことを指定します。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Customize commit messages
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
commit-message:
# Prefix all commit messages with "npm"
prefix: "npm"
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
# Prefix all commit messages with "Composer"
# include a list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Include a list of updated dependencies
# with a prefix determined by the dependency group
commit-message:
prefix: "pip prod"
prefix-development: "pip dev"
include: "scope"
上記の例と同じ構成を使用する� �合、pip
開発依存関係グループの requests
ライブラリを更新すると、次のコミット メッセージが生成されます。
pip dev: bump requests from 1.0.0 to 1.0.1
ignore
デフォルトでは、マニフェストあるいはロックファイルで明示的に定義されたすべての依存関係は、最新の状態に保たれます。 allow
と ignore
を使用して、バージョン アップデートでどの依存関係を維持するかをカスタマイズできます。 Dependabotは許可されたすべての依存関係をチェックし、それから無視された依存関係やバージョンをフィルタリングします。 そのため、allow
と ignore
の両方で一致する依存関係は無視されます。
依存関係は、ignore
にそれを追� するか、Dependabot によって開かれる pull request で @dependabot ignore
コマンドを使うことによって、無視できます。
@dependabot ignore
から ignore
条件を作成する
@dependabot ignore
コマンドを使って無視された依存関係は、各パッケージ マネージャーに集中的に保存されます。 dependabot.yml
ファイルで依存関係の無視を始めると、これらの既存の設定が、構成での ignore
の依存関係とともに考慮されます。
リポジトリで "@dependabot ignore" in:comments
を検索することで、リポジトリに ignore
の設定が保存されているかどうかを確認できます。 この方法で無視された依存関係の無視を解除したいなら、Pull Requestを再度オープンしてく� さい。
@dependabot ignore
について詳しくは、「依存関係の更新に関する pull request を管理する」をご覧く� さい。
無視する依存関係とバージョンを指定する
ignore
オプションを使って、更新する依存関係をカスタマイズできます。 ignore
オプションでは、次のオプションがサポートされています。
dependency-name
— 名前が一致する依存関係の更新を無視するために使います。必要に応じて、*
を使って 0 個以上の文字と一致させます。 Java の依存関係の� �合、dependency-name
属性の形式はgroupId:artifactId
になります (例:org.kohsuke:github-api
)。versions
— 特定のバージョンまたはバージョン範囲を無視するために使います。 範囲を定義する� �合は、パッケージ マネージャーの標準パターンを使います(例: npm の� �合は^1.0.0
、Bundler の� �合は~> 2.0
)。update-types
— バージョン更新での semver のmajor
、minor
、patch
の更新など、更新の種類を無視するために使います (例:version-update:semver-patch
でパッチの更新が無視されます)。 これをdependency-name: "*"
と組み合わせると、すべての依存関係で特定のupdate-types
を無視できます。 現在サポートされているオプションは、version-update:semver-major
、version-update:semver-minor
、version-update:semver-patch
� けです。 セキュリティの更新はこの設定には影響されません。
versions
と update-types
を一緒に使うと、Dependabot はいずれのセットでもすべての更新を無視します。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Use `ignore` to specify dependencies that should not be updated
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
ignore:
- dependency-name: "express"
# For Express, ignore all updates for version 4 and 5
versions: ["4.x", "5.x"]
# For Lodash, ignore all updates
- dependency-name: "lodash"
# For AWS SDK, ignore all patch updates
- dependency-name: "aws-sdk"
update-types: ["version-update:semver-patch"]
注: 構成ファイルの ignore
オプションにアクセスできない依存関係を追� した� �合でも、Dependabot は、ファイル内のすべての依存関係にアクセスできる� �合は、マニフェストまたはロック ファイルでのバージョン更新のみを実行できます。 詳しくは、「Organization のセキュリティおよび分析設定を管理する」と「Dependabot エラーのトラブルシューティング」をご覧く� さい。
insecure-external-code-execution
package-ecosystem
の値が bundler
、mix
、および pip
であるパッケージ マネージャーは、バージョン更新プロセスの一環としてマニフェスト内の外部コードを実行できます。 これにより、セキュリティが侵害されたパッケージが認証情� �を盗ん� り、構成済みのレジストリにアクセスしたりすることが可能になる� �合もあります。 updates
の構成に registries
を追� すると、Dependabot は自動的に外部コードの実行を禁止し、バージョンの更新が失敗することがあります。 insecure-external-code-execution
を allow
に設定することで、この動作をオーバーライドして、bundler
、mix
、pip
パッケージ マネージャーで外部コードを実行できます。
insecure-external-code-execution
を deny
に設定することで、この更新設定に registries
の設定があるかどうかにかかわらず、明示的に外部コードの実行を拒否できます。
# Allow external code execution when updating dependencies from private registries
version: 2
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
updates:
- package-ecosystem: "bundler"
directory: "/rubygems-server"
insecure-external-code-execution: allow
registries: "*"
schedule:
interval: "monthly"
labels
既定では、Dependabot ではすべての pull request を dependencies
ラベル付きで発行します。 複数のパッケージマネージャが定義されている� �合、DependabotはそれぞれのPull Requestに追� のラベルを含めます。 これは、その pull request によってどの言語またはエコシステ� が更新されるかを示します。たとえば、Gradle の更新には java
、Git サブモジュールの更新には submodules
というようになります。 Dependabotは、リポジトリ中の必要に応じて自動的にこれらのデフォルトラベルを作成します。
既定のラベルをオーバーライドし、パッケージ マネージャーに対して発行されるすべての pull request に代替のラベルを指定するには、labels
を使います。 これらのラベルのいずれかがリポジトリで定義されていない� �合は無視されます。
既定のラベルを含むすべてのラベルを無効にするには、labels: [ ]
を使います。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Specify labels for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Specify labels for npm pull requests
labels:
- "npm"
- "dependencies"
milestone
パッケージ マネージャーに対して発行されたすべての pull request をマイルストーンと関連付けるには、milestone
を使います。 ラベルではなくマイルストーンの数値識別子を指定する必要があります。 マイルストーンを表示した� �合、ページの URL の milestone
より後の最後の部分が識別子になります。 (例: https://github.com/<org>/<repo>/milestone/3
)。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Specify a milestone for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Associate pull requests with milestone "4"
milestone: 4
open-pull-requests-limit
デフォルトでは、Dependabot は、バージョン更新に対して最大 5 つのプルリクエストをオープンします。 Dependabot からの未解決の pull request が 5 つあると、Dependabot は、未解決の要求の一部がマージまたは閉じられるまで、新しい要求を開けません。 この制限を変更するには open-pull-requests-limit
を使います。 これは、パッケージマネージャーのバージョン更新を一時的に無効にする簡単な方法としても使用できます。
このオプションはセキュリティアップデートに影響を与えません。セキュリティアップデートには、10 件のオープンプルリクエストの内部制限があります。
# Specify the number of open pull requests allowed
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Disable version updates for npm dependencies
open-pull-requests-limit: 0
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Allow up to 10 open pull requests for pip dependencies
open-pull-requests-limit: 10
pull-request-branch-name.separator
Dependabot は、プルリクエストごとにブランチを生成します。 各ブランチ名には、dependabot
および更新されるパッケージ マネージャーと依存関係が含まれます。 既定では、これらの部分は /
記号で区切られています (例: dependabot/npm_and_yarn/next_js/acorn-6.4.1
)。
別の区切り記号を指定するには pull-request-branch-name.separator
を使います。 これは、"-"
、_
、/
のいずれかです。 ハイフン記号は、引用符で囲む必要があります。囲まない� �合、空の YAML リストを開始すると解釈されます。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Specify a different separator for branch names
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
pull-request-branch-name:
# Separate sections of the branch name with a hyphen
# for example, `dependabot-npm_and_yarn-next_js-acorn-6.4.1`
separator: "-"
rebase-strategy
デフォルトでは、DependabotはオープンなPull Requestへの変更を検出すると、そのPull Requestを自動的にリベースします。 この動作を無効にするには、rebase-strategy
を使います。
利用可能なリベース戦略
- 自動リベースを無効にするには
disabled
。 - 既定の動作を使い、変更が検出されたときに開かれている pull request をリベースするには
auto
。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Disable automatic rebasing
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Disable rebasing for npm pull requests
rebase-strategy: "disabled"
registries
バージョン更新の実行時に Dependabot がプライベート パッケージ レジストリにアクセスできるようにするには、関係する updates
の構成に registries
の設定を含める必要があります。 registries
を "*"
に設定することで、定義されたすべてのリポジトリを使用できるようにすることができます。 また、更新が使用できるレジストリをリストすることもできます。 これを行うには、dependabot.yml ファイルの最上位の registries
セクションで定義されているレジストリの名前を使います。 詳しくは、後の「プライベート レジストリの設定オプション」をご覧く� さい。
Dependabot が bundler
、mix
、pip
パッケージ マネージャーを使ってプライベート レジストリの依存関係を更新できるようにするため、外部コードの実行を許可できます。 詳しくは、上の「insecure-external-code-execution
」をご覧く� さい。
# Allow Dependabot to use one of the two defined private registries
# when updating dependency versions for this ecosystem
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
npm-npmjs:
type: npm-registry
url: https://registry.npmjs.org
username: octocat
password: ${{secrets.MY_NPM_PASSWORD}}
updates:
- package-ecosystem: "gitsubmodule"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
reviewers
パッケージ マネージャーに対して発行されたすべての pull request に個々のレビュー担当者またはレビュー担当者のチー� を指定するには、reviewers
を使います。 チー� を @mentioning している� �合と同様に、Organization を含む完全なチー� 名を使う必要があります。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
# Specify reviewers for pull requests
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Add reviewers
reviewers:
- "octocat"
- "my-username"
- "my-org/python-team"
schedule.day
weekly
の更新スケジュールを設定すると、既定では、Dependabot は月曜日の、リポジトリに設定されたランダ� な時刻に、新しいバージョンをチェックします。 更新をチェックする代替日を指定するには、schedule.day
を使います。
サポート状況の値
monday
tuesday
wednesday
thursday
friday
saturday
sunday
# Specify the day for weekly checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
schedule.time
既定では、Dependabot は、リポジトリに設定されたランダ� な時刻に、新しいバージョンをチェックします。 更新をチェックする別の時刻を指定するには、schedule.time
を使います (形式: hh:mm
)。
# Set a time for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Check for npm updates at 9am UTC
time: "09:00"
schedule.timezone
既定では、Dependabot は、リポジトリに設定されたランダ� な時刻に、新しいバージョンをチェックします。 別のタイ� ゾーンを指定するには、schedule.timezone
を使います。 タイ� ゾーン識別子は、iana が管理するタイ� ゾーン データベースのものである必要があります。 詳しくは、tz データベースのタイ� ゾーンの一覧をご覧く� さい。
# Specify the timezone for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
time: "09:00"
# Use Japan Standard Time (UTC +09:00)
timezone: "Asia/Tokyo"
target-branch
デフォルトでは、Dependabot はデフォルトのブランチでマニフェストファイルをチェックし、このブランチに対するバージョン更新のプルリクエストを発行します。 マニフェスト ファイルと pull request に別のブランチを指定するには、target-branch
を使います。 このオプションを使用すると、このパッケージマネージャーの設定は、セキュリティアップデートのために発行されたプルリクエストに影響しなくなります。
# Specify a non-default branch for pull requests for pip
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Raise pull requests for version updates
# to pip against the `develop` branch
target-branch: "develop"
# Labels on pull requests for version updates only
labels:
- "pip dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
# Labels on pull requests for security and version updates
labels:
- "npm dependencies"
vendor
依存関係を更新するときに、依存関係のベンダリングを Dependabot に指示するには、vendor
オプションを使います。 gomod
を使っている� �合は、Dependabot がこのツールに対するベンダリングを自動的に検出するため、このオプションを使わないでく� さい。
# Configure version updates for both dependencies defined in manifests and vendored dependencies
version: 2
updates:
- package-ecosystem: "bundler"
# Raise pull requests to update vendored dependencies that are checked in to the repository
vendor: true
directory: "/"
schedule:
interval: "weekly"
Dependabot は、リポジトリの特定の� �所にあるベンダリングされた依存関係のみを更新します。
パッケージ マネージャー | ベンダリングされた依存関係のための必� �パス | 詳細情� � |
---|---|---|
bundler | 依存関係は vendor/cache ディレクトリにある必要があります。 他のファイル パスはサポートされません。 | bundle cache ドキュメント |
gomod | パス要件なし (通常、依存関係は vendor ディレクトリにあります) | go mod vendor ドキュメント |
versioning-strategy
Dependabot がマニフェストファイルを編集してバージョンを更新する� �合、次の全体的な戦略を使用します。
- アプリケーションでは、バージョン要件が増えます(npm、pip、Composer など)。
- ライブラリでは、バージョンの範囲が広がります(Bundler や Cargo など)。
サポートされているパッケージ マネージャーでこの動作を変更するには、versioning-strategy
オプションを使います。
target-branch
を使って既定以外のブランチのバージョン アップデートをチェックしないかぎり、このオプションの設定も、このパッケージ マネージャーのマニフェスト ファイルに対するセキュリティ更新プログラ� の pull request に影響します。
利用可能な更新戦略
オプション | サポートしているもの | アクション |
---|---|---|
lockfile-only | bundler , cargo , composer , mix , npm , pip | ロックファイルを更新するプルリクエストのみを作成します。 パッケージマニフェストの変更が必要になる新しいバージョンは無視します。 |
auto | bundler , cargo , composer , mix , npm , pip | 前述のデフォルトの戦略に従います。 |
widen | composer , npm | 可能であれば、バージョン要件を緩和して、新旧両方のバージョンを含めます。 |
increase | bundler , composer , npm | 新しいバージョンに一致するように、常にバージョン要件を増やします。 |
increase-if-necessary | bundler , composer , npm | 新しいバージョンで必要な� �合にのみ、バージョン要件を増やします。 |
# Customize the manifest version strategy
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Update the npm manifest file to relax
# the version requirements
versioning-strategy: widen
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
# Increase the version requirements for Composer
# only when required
versioning-strategy: increase-if-necessary
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Only allow updates to the lockfile for pip and
# ignore any version updates that affect the manifest
versioning-strategy: lockfile-only
プライベートレジストリの設定オプション
最上位の registries
キーは省略可能です。 このキーでは、Dependabot がプライベートパッケージレジストリにアクセスするために使用する認証の詳細を指定できます。
注: プライベート ネットワーク上のファイアーウォールの内側のプライベート レジストリはサポートされていません。
registries
キーの値は連想配列で、その各要� は、特定のレジストリを指定するキーと、そのレジストリへのアクセスに必要な設定を指定する連想配列の値により構成されます。 次の dependabot.yml ファイルでは、ファイルの registries
セクションで dockerhub
として指定されたレジストリが構成された後、ファイルの updates
でそれが参照されています。
# Minimal settings to update dependencies in one private registry
version: 2
registries:
dockerhub: # Define access for a private registry
type: docker-registry
url: registry.hub.docker.com
username: octocat
password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
- package-ecosystem: "docker"
directory: "/docker-registry/dockerhub"
registries:
- dockerhub # Allow version updates for dependencies in this registry
schedule:
interval: "monthly"
以下のオプションを使用して、アクセス設定を指定します。 レジストリの設定には、type
と url
、そして通常は username
と password
の組み合わせまたは token
を含める必要があります。
オプション� � � � � � � � � � � � � � � � | 説明 |
---|---|
type | レジストリのタイプを指定します。 タイプの一覧については下記をご覧く� さい。 |
url | このレジストリの依存関係にアクセスするために使用する URL。 プロトコルはオプションです。 指定しないと、https:// が想定されます。 Dependabot が必要に応じて末尾のスラッシュを追� または無視します。 |
username | Dependabot がレジストリにアクセスするために使用するユーザ名。 |
password | 指定したユーザのパスワードを含む Dependabot シークレットへのリファレンス。 詳しくは、「Dependabot に対する暗号化されたシークレットを管理する」をご覧く� さい。 |
key | このレジストリへのアクセスキーを含むDependabotシークレットへの参照 詳しくは、「Dependabot に対する暗号化されたシークレットを管理する」をご覧く� さい。 |
token | このレジストリへのアクセストークンを含む Dependabot シークレットへのリファレンス。 詳しくは、「Dependabot に対する暗号化されたシークレットを管理する」をご覧く� さい。 |
replaces-base | type: python-index であるレジストリでは、ブール値が true の� �合、pip は、Python Package Index のベース URL (既定では https://pypi.org/simple ) ではなく、指定された URL を使って依存関係を解決します。 |
各構成の type
には、特定の設定を指定する必要があります。 タイプによっては、複数の接続方法を使用できます。 以下のセクションでは、各 type
に使う必要がある設定の詳細を説明します。
composer-repository
composer-repository
タイプは、ユーザー名とパスワードをサポートします。
registries:
composer:
type: composer-repository
url: https://repo.packagist.com/example-company/
username: octocat
password: ${{secrets.MY_PACKAGIST_PASSWORD}}
docker-registry
注: Azure Container Registry (ACR) はサポートされていません。
docker-registry
タイプは、ユーザー名とパスワードをサポートします。
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
docker-registry
タイプは、静的な AWS 資� �情� �を使って Amazon ECR からプルするためにも使用できます。
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
git
git
タイプは、ユーザー名とパスワードをサポートします。
registries:
github-octocat:
type: git
url: https://github.com
username: x-access-token
password: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
hex-organization
hex-organization
タイプは、Organization とキーをサポートします。
registries:
github-hex-org:
type: hex-organization
organization: github
key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}
maven-repository
maven-repository
タイプは、ユーザー名とパスワードをサポートします。
registries:
maven-artifactory:
type: maven-repository
url: https://artifactory.example.com
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
npm-registry
npm-registry
タイプは、ユーザー名とパスワード、またはトークンをサポートします。
ユーザー名とパスワードを使うとき、.npmrc
の認証トークンには base64
でエンコードされた _password
を含めることができます。た� し、Dependabot の構成ファイルで参照されるパスワードは、元の (エンコードされていない) パスワードである必要があります。
registries:
npm-npmjs:
type: npm-registry
url: https://registry.npmjs.org
username: octocat
password: ${{secrets.MY_NPM_PASSWORD}} # Must be an unencoded password
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
nuget-feed
nuget-feed
タイプは、ユーザー名とパスワード、またはトークンをサポートします。
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
python-index
python-index
タイプは、ユーザー名とパスワード、またはトークンをサポートします。
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
replaces-base: true
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
replaces-base: true
rubygems-server
rubygems-server
タイプは、ユーザー名とパスワード、またはトークンをサポートします。
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
terraform-registry
terraform-registry
タイプは、トークンをサポートします。
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}