Skip to main content

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

Dependabot が使用するパッケージを自動的に更新するようにリポジトリを設定できます。

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

Users with write access

Dependabot version updates を有効化する

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

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

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

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

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

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

  4. [Dependabot] で、[Dependabot version updates] の右側にある [Enable] をクリックして、リポジトリの 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 がバージョンやプロジェクトの依存性を更新する方法を設定できます。 各エントリは、特定のパッケージマネージャーの更新設定を行います。 詳細については、「[AUTOTITLE](/code-security/concepts/supply-chain-security/about-the-dependabot-yml-file)」および「[AUTOTITLE](/code-security/dependabot/working-with-dependabot/dependabot-options-reference)」を参照してください。
    
  8. パッケージマネージャーごとに、以下を使用します。

    •     `package-ecosystem`: パッケージ マネージャーを指定します。 サポートされているパッケージ マネージャーの詳細については、「[`package-ecosystem`](/code-security/dependabot/working-with-dependabot/dependabot-options-reference#package-ecosystem-)」を参照してください。
      
    •     `directories` または `directory`: マニフェストや他の定義ファイルの場所を指定します。 詳細については、「[マニフェスト ファイルの複数の場所を定義する](/code-security/dependabot/dependabot-version-updates/controlling-dependencies-updated#defining-multiple-locations-for-manifest-files)」を参照してください。
      
    •     `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 オプション リファレンス」を参照してください。