依存関係の更新の設定オプション

Dependabot がリポジトリを維持する方法をカスタマイズする場合に使用可能なすべてのオプションの詳細情報。

People with write permissions to a repository can configure Dependabot for the repository.

dependabot.yml ファイルについて

Dependabot の設定ファイルである dependabot.yml では YAML 構文を使用します。 YAMLについて詳しくなく、学んでいきたい場合は、「Learn YAML in five minutes (5分で学ぶYAML)」をお読みください。

このファイルは、リポジトリの .github ディレクトリに保存する必要があります。 dependabot.yml ファイルを追加または更新すると、即座にバージョン更新を確認します。 セキュリティアップデートに影響するオプションは、次にセキュリティアラートがセキュリティアップデートのためのプルリクエストをトリガーするときにも使用されます。 For more information, see "Enabling and disabling Dependabot version updates" and "Configuring Dependabotセキュリティアップデート."

dependabot.yml ファイルには、必須の最上位キーに versionupdates の 2 つがあります。 必要に応じて、最上位に registries キーを含めることができます。 ファイルは、version: 2 で始まる必要があります。

更新の設定オプション

最上位の updates キーは必須です。 これを使用することで、Dependabot がバージョンやプロジェクトの依存性を更新する方法を設定できます。 各エントリは、特定のパッケージマネージャーの更新設定を行います。 次のオプションを使用できます。

Option必須説明
package-ecosystemX使用するパッケージマネージャー
directoryXパッケージマニフェストの場所
schedule.intervalX更新を確認する頻度
allow許可する更新をカスタマイズする
assigneesプルリクエストのアサイン担当者
commit-messageコミットメッセージの環境設定
ignore特定の依存関係またはバージョンを無視する
insecure-external-code-executionマニフェストファイル内でコードの実行を許可または拒否する
labelsプルリクエストに設定するラベル
マイルストーンプルリクエストに設定するマイルストーン
open-pull-requests-limitバージョン更新時のオープンなプルリクエスト数を制限する
pull-request-branch-name.separatorプルリクエストブランチ名の区切り文字を変更する
rebase-strategy自動リベースを無効にする
registriesDependabot がアクセスできるプライベートリポジトリ
reviewersプルリクエストのレビュー担当者
schedule.day更新を確認する曜日
schedule.time更新を確認する時刻 (hh:mm)
schedule.timezone時刻のタイムゾーン(ゾーン識別子)
target-branchプルリクエストを作成するブランチ
vendorベンダーまたはキャッシュされた依存関係を更新する
versioning-strategyマニフェストのバージョン要件の更新方法

これらのオプションは、次のようなカテゴリに幅広く適合しています。

さらに、open-pull-requests-limit オプションでは、Dependabot が開くことができるバージョン更新のプルリクエストの最大数を変更できます。

注釈: これらの設定オプションの一部は、脆弱性のあるパッケージマニフェストのセキュリティアップデートのために発行されたプルリクエストにも影響を与える可能性があります。

脆弱性のあるパッケージマニフェストのセキュリティアップデートは、デフォルトブランチでのみ発生します。 設定オプションが同じブランチに設定され(target-branch を使用しない場合は true)、脆弱性のあるマニフェストの package-ecosystemdirectory を指定している場合、セキュリティアップデートのプルリクエストで関連オプションが使用されます。

一般に、セキュリティアップデートでは、メタデータの追加や動作の変更など、プルリクエストに影響する設定オプションが使用されます。 For more information about security updates, see "Configuring Dependabotセキュリティアップデート."

package-ecosystem

必須。 Dependabot で新しいバージョンを監視するパッケージマネージャーごとに、package-ecosystem 要素を1つ追加してください。 リポジトリには、これらの各パッケージマネージャーの依存関係マニフェストまたはロックファイルも含まれている必要があります。 サポートするパッケージマネージャーに対してベンダリングを有効にする場合、ベンダリングされた依存関係が必須ディレクトリに存在する必要があります。 詳しい情報については、以下の vendor を参照してください。

以下の表は、各パッケージマネージャについて以下の項目を示しています。

  • dependabot.ymlファイル中で使うYAML値
  • パッケージマネージャのサポートされているバージョン
  • プライベートのGitHubリポジトリあるいはレジストリ内の依存関係がサポートされているか
  • ベンダーの依存関係がサポートされているか
パッケージマネージャーYAML値サポートされているバージョンプライベートリポジトリプライベートレジストリベンダー
Bundlerbundlerv1, v2
Cargocargov1
Composercomposerv1, v2
Dockerdockerv1
Hexmixv1
elm-packageelmv0.19
GitサブモジュールgitsubmoduleN/A (バージョンなし)
GitHub Actionsgithub-actionsN/A (バージョンなし)
Goモジュールgomodv1
GradlegradleN/A(バージョンなし)[1]
MavenmavenN/A(バージョンなし)[2]
npmnpmv6, v7
NuGetnuget<= 4.8[3]
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
Terraformterraform>= 0.13, <= 1.0
yarnnpmv1

[1] Dependabot doesn't run Gradle but supports updates to the following files: build.gradle, build.gradle.kts (for Kotlin projects), and files included via the apply declaration that have dependencies in the filename. Note that apply does not support apply to, recursion, or advanced syntaxes (for example, Kotlin's apply with mapOf, filenames defined by property).

[2] DependabotはMavenを実行しませんが、pom.xmlファイルの更新はサポートします。

[3] DependabotはNuGet CLIを実行しませんが、バージョン4.8までのほとんどの機能をサポートします。

pipenvpoetryといったパッケージマネージャでは、pipのYAML値を使う必要があります。 たとえばPythonの依存関係を管理するのにpoetryを使っており、Dependabotに新しいバージョンのために依存関係のマニフェストファイルをモニターさせたい場合は、dependabot.ymlファイル中でpackage-ecosystem: "pip"を使ってください。

# 3つのパッケージマネージャー用の基本設定

version: 2
updates:

  # GitHub アクションの依存関係を維持する
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"

  # npm の依存関係を維持する
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"

  # Composer の依存関係を維持する
  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "daily"

directory

必須。 各パッケージマネージャー (package.jsonGemfile など) のパッケージマニフェストの場所を定義する必要があります。 GitHub Actions 以外のすべてのエコシステムで、リポジトリのルートに対する相対ディレクトリを定義します。 GitHub Actions の場合、ディレクトリを / に設定し、.github/workflows でワークフローファイルを確認します。

# 各パッケージマネージャーのマニフェストファイルの場所を指定する

version: 2
updates:
  - package-ecosystem: "composer"
    # リポジトリのルートに保存されているファイル
    directory: "/"
    schedule:
      interval: "daily"

  - package-ecosystem: "npm"
    # 「app」ディレクトリに保存されているファイル
    directory: "/app"
    schedule:
      interval: "daily"

  - package-ecosystem: "github-actions"
    # 「.github / workflows」のデフォルトの場所に
    # 保存されたワークフローファイル
    directory: "/"
    schedule:
      interval: "daily"

schedule.interval

必須。 各パッケージマネージャーに対して、新しいバージョンを確認する頻度を定義する必要があります。 デフォルトでは、Dependabotは設定ファイル中のすべての更新を適用する時間をランダムに割り当てます。 特定の時間を設定するには、schedule.time及びschedule.timezoneが利用できます。

  • 毎日: 月曜日~金曜日の平日に実行されます。
  • 毎週: 毎週 1 回実行されます。 デフォルトでは月曜日に設定されています。 これを変更するには、schedule.day を使用します。
  • 毎月: 毎月 1 回実行されます。 その月の最初の日に設定されています。
# 各パッケージマネージャーの更新スケジュールを設定する

version: 2
updates:

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # GitHub Actions の更新を毎週確認する
      interval: "daily"

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      # 週に 1 回、Composer が管理する更新を確認する
      interval: "weekly"

注釈: schedule は、Dependabot が新規更新を試行するタイミングを設定します。 ただし、プルリクエストを受け取るタイミングはこれだけではありません。 更新は、 dependabot.yml ファイルへの変更、更新失敗後のマニフェストファイルへの変更、または Dependabotセキュリティアップデート に基づいてトリガーされることがあります。 For more information, see "Frequency of Dependabot pull requests" and "About Dependabotセキュリティアップデート."

allow

デフォルトでは、マニフェストあるいはロックファイルで明示的に定義されたすべての依存関係は、最新の状態に保たれます。 バージョンアップデートでどの依存関係を管理するかは、allowignoreを使ってカスタマイズできます。 Dependabotは許可されたすべての依存関係をチェックし、それから無視された依存関係やバージョンをフィルタリングします。 そのため、allowignoreの両方にマッチした依存関係は無視されます。

更新する依存関係をカスタマイズするには、allow オプションを使用します。 これは、バージョン及びセキュリティのどちらのアップデートにも適用されます。 次のオプションを使用できます。

  • dependency-name: 名前が一致する依存関係の更新を許可するために使用し、必要に応じて * を使用して 0 文字以上の文字と一致させます。 Java の依存関係の場合、dependency-name 属性のフォーマットは groupId:artifactId です(org.kohsuke:github-api など)。

  • dependency-type: 特定の種類の依存関係の更新を許可するために使用します。

    依存関係の種類パッケージマネージャーによるサポート更新の許可
    directすべて明示的に定義されたすべての依存関係。
    indirectbundlerpipcomposercargo直接依存関係の依存関係 (サブ依存関係、または過渡依存関係とも呼ばれる)。
    すべてすべて明示的に定義されたすべての依存関係。 bundlerpipcomposercargo についても、直接依存関係の依存関係になります。
    productionbundlercomposermix, mavennpmpipOnly dependencies in the "Production dependency group".
    developmentbundlercomposermix, mavennpmpip[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 を使用して、パッケージマネージャーに対して発行されたすべてのプルリクエストの個々の担当者を指定します。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# プルリクエストの担当者を指定する

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    # 担当者を追加する
    assignees:
      - "octocat"

commit-message

デフォルトでは、Dependabot はコミットメッセージの設定を検出し、同様のパターンを使用しようとします。 commit-message オプションを使用して、環境設定を明示的に指定します。

対応しているオプション

  • prefix では、すべてのコミットメッセージのプレフィックスを指定します。
  • prefix-development は、Development の依存関係グループ内の依存関係を更新するすべてのコミットメッセージに個別のプレフィックスを指定します。 このオプションの値を指定すると、prefix は、Production の依存関係グループの依存関係の更新にのみ使用されます。 これは、bundlercomposermixmavennpmpip に対応しています。
  • include: "scope" では、任意のプレフィックスの後に、コミットで更新された依存関係のリストが続くことを指定します。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# 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"

ignore

デフォルトでは、マニフェストあるいはロックファイルで明示的に定義されたすべての依存関係は、最新の状態に保たれます。 バージョンアップデートでどの依存関係を管理するかは、allowignoreを使ってカスタマイズできます。 Dependabotは許可されたすべての依存関係をチェックし、それから無視された依存関係やバージョンをフィルタリングします。 そのため、allowignoreの両方にマッチした依存関係は無視されます。

依存関係は、ignoreに追加するか、DependabotがオープンしたPull Request上で@dependabot ignoreコマンドを使うことによって無視できます。

@dependabot ignoreからのignore条件の作成

@dependabot ignoreコマンドを使って無視された依存関係は、各パッケージマネージャーごとに集中的に保存されます。 dependabot.ymlファイル中で依存関係を無視し始めると、これらの既存の設定は、設定中のignoreの依存関係とともに考慮されます。

リポジトリがignoreの設定を保存したかは、リポジトリで"@dependabot ignore" in:commentsを検索すれば調べられます。 この方法で無視された依存関係の無視を解除したいなら、Pull Requestを再度オープンしてください。

For more information about the @dependabot ignore commands, see "Managing pull requests for dependency updates."

無視する依存関係とバージョンを指定する

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のmajorminorpatch更新といった更新の種類を無視するために使います。(たとえばversion-update:semver-patchでパッチアップデートが無視されます)。 これをcode>dependency-name: "*"と組み合わせて、特定のupdate-typesをすべての依存関係で無視できます。 現時点では、サポートされているオプションはversion-update:semver-majorversion-update:semver-minorversion-update:semver-patchのみです。 セキュリティの更新はこの設定には影響されません。

versionsupdate-typesが合わせて使われると、Dependabotはいずれのセットでもすべての更新を無視します。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# 更新されるべきではない依存関係を、`ignore`を使って指定する

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    ignore:
      - dependency-name: "express"
        # Expressではバージョン4と5に対するすべての更新を無視
        versions: ["4.x", "5.x"]
        # Lodashについてはすべての更新を無視
      - dependency-name: "lodash"
        # AWS SDKについてはすべてのパッチアップデートを無視
      - dependency-name: "aws-sdk"
        update-types: ["version-update:semver-patch"]

注釈: 設定ファイルの ignore オプションにアクセス不可の依存関係を追加した場合でも、 ファイルの依存関係のすべてにアクセスできる場合には、Dependabot は、マニフェストまたはロックされたファイルのみにバージョン更新を実行します。 For more information, see "Managing security and analysis settings for your organization" and "Troubleshooting Dependabot errors."

insecure-external-code-execution

package-ecosystem の値が bundlermix、およびpip であるパッケージマネージャーは、バージョン更新プロセスの一環として間にファスト内の外部コードを実行できます。 これにより、セキュリティが侵害されたパッケージが認証情報を盗んだり、構成済みのレジストリにアクセスしたりすることが可能になる場合もあります。 updates 設定内で registries を追加すると、Dependabot は自動的に外部コードの実行を防ぎ、この場合はバージョン更新が失敗することもあります。 この動作をオーバーライドし、bundlermix、および pip パッケージマネージャーで外部コードの実行を許可するには、insecure-external-code-executionallow に設定します。

insecure-external-code-executiondeny に設定することで、この更新設定に 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は、リポジトリ中の必要に応じて自動的にこれらのデフォルトラベルを作成します。

labels を使用してデフォルトのラベルを上書きし、パッケージマネージャーに対して発行されたすべてのプルリクエストに代替のラベルを指定します。 これらのラベルのいずれかがリポジトリで定義されていない場合は無視されます。 デフォルトのラベルを含むすべてのラベルを無効にするには、labels: [ ] を使用します。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# プルリクエストのラベルを指定する
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    # npm プルリクエストのラベルを指定する
    labels:
      - "npm"
      - "dependencies"

マイルストーン

milestone を使用して、パッケージマネージャーに対して発行されたすべてのプルリクエストをマイルストーンに関連付けます。 ラベルではなくマイルストーンの数値識別子を指定する必要があります。 マイルストーンを表示する場合、milestone の後の、ページ URL の最後の部分が識別子になります。 たとえば、https://github.com/<org>/<repo>/milestone/3 などです。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# プルリクエストのマイルストーンを指定する

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    # プルリクエストをマイルストーン「4」に関連付ける
    milestone: 4

open-pull-requests-limit

デフォルトでは、Dependabot は、バージョン更新に対して最大 5 つのプルリクエストをオープンします。 5 つのプルリクエストがオープンになると、オープンになっているリクエストの一部をマージまたはクローズするまで、新しいリクエストはブロックされます。オープンになっているリクエストの一部をマージまたはクローズしたら、その後の更新で新しいプルリクエストを開くことができます。 この制限を変更するには、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を使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# 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 で自動リベースを無効にします。
  • auto でデフォルトの動作を使用し、変更が検出されたときにオープンなPull Requestをリベースします。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# 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 が bundlermix、および 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

reviewers を使用して、パッケージマネージャーに対して発行されたすべてのプルリクエストの個々のレビュー担当者またはレビュー担当者の Team を指定します。 チームを@メンションしている場合と同様に、Organization を含む完全な Team 名を使用する必要があります。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

# プルリクエストのレビュー担当者を指定する

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "daily"
    # レビュー担当者を追加する
    reviewers:
      - "octocat"
      - "my-username"
      - "my-org/python-team"

schedule.day

When you set a weekly update schedule, by default, Dependabot checks for new versions on Monday at a random set time for the repository. schedule.day を使用して、更新をチェックする代替日を指定します。

サポートされている値

  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
# 週次のチェック日を指定する

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # 毎週日曜日に npm の更新をチェックする
      day: "sunday"

schedule.time

By default, Dependabot checks for new versions at a random set time for the repository. schedule.time を使用して、更新をチェックする別の時刻を指定します(形式: hh:mm)。

# チェックする時刻を設定する
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
      # 午前 9 時 (UTC) に npm の更新をチェックする
      time: "09:00"

schedule.timezone

By default, Dependabot checks for new versions at a random set time for the repository. 別のタイムゾーンを指定するには、schedule.timezone を使用します。 タイムゾーン識別子は、iana が管理するタイムゾーンデータベースのものである必要があります。 詳しい情報については、List of tz database time zones を参照してください。

# チェック時のタイムゾーンを指定する

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
      time: "09:00"
      # 日本標準時 (UTC +09:00) を使用する
      timezone: "Asia/Tokyo"

target-branch

デフォルトでは、Dependabot はデフォルトのブランチでマニフェストファイルをチェックし、このブランチに対するバージョン更新のプルリクエストを発行します。 target-branch を使用して、マニフェストファイルとプルリクエストに別のブランチを指定します。 このオプションを使用すると、このパッケージマネージャーの設定は、セキュリティアップデートのために発行されたプルリクエストに影響しなくなります。

# pip のプルリクエストにデフォルト以外のブランチを指定する

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "daily"
    # 「develop」ブランチに対して pip する
    # バージョン更新のプルリクエストを発行する
    target-branch: "develop"
    # バージョン更新のみのプルリクエストのラベル
    labels:
      - "pip dependencies"

  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # 毎週日曜日に npm の更新を確認する
      day: "sunday"
    # セキュリティおよびバージョン更新に対するプルリクエストのラベル
    labels:
      - "npm dependencies"

vendor

vendor オプションは、依存関係を更新する際に、Dependabot にベンダリングを指示するために使用します。 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 など)。

サポートされているパッケージマネージャーでこの動作を変更するには、version-stratege オプションを使用します。

このオプションの設定も、target-branchを使って非デフォルトブランチのバージョンアップデートをチェックしないかぎり、このパッケージマネージャのマニフェストファイルに対するセキュリティアップデートのプルリクエストに影響します。

利用可能な更新戦略

Optionサポートアクション
lockfile-onlybundlercargocomposermixnpmpipロックファイルを更新するプルリクエストのみを作成します。 パッケージマニフェストの変更が必要になる新しいバージョンは無視します。
autobundlercargocomposermixnpmpip前述のデフォルトの戦略に従います。
widencomposernpm可能であれば、バージョン要件を緩和して、新旧両方のバージョンを含めます。
increasebundlercomposernpm新しいバージョンに一致するように、常にバージョン要件を増やします。
increase-if-necessarybundlercomposernpm新しいバージョンで必要な場合にのみ、バージョン要件を増やします。
# 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 として指定されたレジストリを設定し、次にファイルの dockerhub でそれを参照しています。

# 1つのプライベートリポジトリで依存関係を更新するための最低限の設定

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"

以下のオプションを使用して、アクセス設定を指定します。 レジストリ設定には typeurl、そして通常は usernamepassword の組み合わせか token を含める必要があります。

オプション説明
typeレジストリのタイプを指定します。 タイプの一覧については下記をご覧ください。
urlこのレジストリの依存関係にアクセスするために使用する URL。 プロトコルはオプションです。 指定しない場合には、https:// が使用されます。 Dependabot が必要に応じて末尾のスラッシュを追加または無視します。
ユーザ名Dependabot がレジストリにアクセスするために使用するユーザ名。
パスワード指定したユーザのパスワードを含む Dependabot シークレットへのリファレンス。 For more information, see "Managing encrypted secrets for Dependabot."
keyこのレジストリへのアクセスキーを含むDependabotシークレットへの参照 For more information, see "Managing encrypted secrets for Dependabot."
トークンこのレジストリへのアクセストークンを含む Dependabot シークレットへのリファレンス。 For more information, see "Managing encrypted secrets for Dependabot."
replaces-basetype: 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

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

The maven-repository type supports username and password.

registries:
  maven-artifactory:
    type: maven-repository
    url: https://artifactory.example.com
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}

npm-registry

npm-registry タイプは、ユーザ名とパスワード、またはトークンをサポートします。

When using username and password, your .npmrc's auth token may contain a base64 encoded _password; however, the password referenced in your Dependabot configuration file must be the original (unencoded) password.

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}}

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?