Skip to main content

Dependabot バージョンの更新の構成

使用するパッケージ Dependabot 自動的に更新されるようにリポジトリを構成できます。

この機能を使用できるユーザーについて

Users with write access

Dependabot version updates の有効化

Dependabot version updatesを有効にするには、dependabot.yml構成ファイルをリポジトリにコミットします。

設定ページで機能を有効にした場合、GitHub編集できる基本的なファイルが作成されます。それ以外の場合は、任意のファイル エディターを使用してファイルを作成できます。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [Security] セクションで、[ Advanced Security] をクリックします。

  4. [Dependabot] の [Dependabot version updates] の右側にある [有効] をクリックして、リポジトリのdependabot.yml ディレクトリに基本的な.github構成ファイルを開きます。 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"
    
  5. version を追加します。 この鍵は必須です。 このファイルは version: 2 で始まる必要があります。

  6. プライベート レジストリに依存関係がある場合は、必要に応じて、認証情報が含まれている registries セクションを追加します。 詳細については、「Dependabot のプライベート レジストリへのアクセスの構成」を参照してください。

  7. updates セクションを追加し、Dependabot で監視する各パッケージ マネージャーのエントリを追加します。 この鍵は必須です。 これを使用して、バージョンまたはプロジェクトの依存関係 Dependabot 更新する方法を構成します。 各エントリは、特定のパッケージマネージャーの更新設定を行います。 詳細については、「dependabot.yml ファイルについて」および「Dependabot オプション リファレンス」を参照してください。

  8. パッケージマネージャーごとに、以下を使用します。

    • package-ecosystem: パッケージ マネージャーを指定します。 サポートされているパッケージ マネージャーの詳細については、「package-ecosystem」を参照してください。
    • directories または directory: マニフェストや他の定義ファイルの場所を指定します。 詳細については、「マニフェスト ファイルの複数の場所を定義する」を参照してください。
    • schedule.interval: 新しいバージョンをチェックする頻度を指定します。
  9. リポジトリの .github ディレクトリにある dependabot.yml 構成ファイルを確認します。

dependabot.yml ファイルの例

次の dependabot.yml ファイルの例では、npm、Docker、 GitHub Actionsの 3 つのパッケージ マネージャーのバージョン更新プログラムを構成します。 このファイルがチェックインされると、 Dependabot は既定のブランチ上のマニフェスト ファイルで古い依存関係をチェックします。 古い依存関係が見つかった場合、デフォルトブランチに対してプルリクエストを発行して依存関係を更新します。

YAML
# 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を明示的に有効にする必要もあります。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [Security] セクションで、[ Advanced Security] をクリックします。

  4. [Dependabot]、[Dependabot version updates] の右側にある [ 有効] をクリックして、 Dependabot がバージョンの更新を開始できるようにします。

間接依存関係の更新プログラムの受信

既定では、マニフェストで明示的に定義されている直接の依存関係のみが、 Dependabot version updatesによって最新の状態に保たれます。 ロック ファイルで定義されている間接的な依存関係に対する更新を受け取ることができます。 詳細については、「Dependabot が更新する依存関係を制御する」を参照してください。

プライベート依存関係へのアクセスの有効化

セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しくは、「組織のセキュリティおよび分析設定を管理する」をご覧ください。 リポジトリの dependabot.yml 構成ファイルで、プライベート レジストリへのアクセスを構成できます。 詳しくは、「Dependabot のプライベート レジストリへのアクセスの構成」をご覧ください。

さらに、 Dependabot では、すべてのパッケージ マネージャーのプライベート GitHub 依存関係はサポートされません。 詳細については、「Dependabot でサポートされているエコシステムとリポジトリ」および「GitHub言語のサポート」を参照してください。

バージョン更新のステータスを確認する

バージョン アップデートを有効にすると、リポジトリの依存関係グラフにある [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 オプション リファレンス」を参照してください。