[GitHub] Dependabot version updatesでDependencyのアップデートを定期的にチェックする

2022.04.28

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、GitHubでDependabot version updatesを使ってDependencyのアップデートを定期的にチェックしてみました。

Dependabotの4つの機能

Dependabotを使うと、GitHubなどでホスティングしているソースコードに含まれるDependencyのバージョンアップや脆弱性の検出を簡単に行うことができるようになります。

GitHubにおいて、Dependabotは大きく分けて以下の4つの機能から成り立っています。

  • Dependency graph
  • Dependabot version updates
  • Dependabot alerts
  • Dependabot security updates

これら機能はPrivate Repositoryでは既定で無効ですが、[Settings > Security > Code security and analysis]でそれぞれ有効化できます。

今回はこのうちDependabot version updatesを使ってみたいと思います。

Dependabot version updatesを使ってみる

Dependabot version updatesを使用すると、Dependencyのアップデートを定期的にチェックし、バージョンアップを行うPull Requestの作成を自動で行うことができます。

Dependabot version updatesを使うためには、Dependency graphを有効化する必要があります。(下記は既に有効化された様子)

[Insights]の[Dependency graph]を開くと、Dependency graphによりRepositoryのデフォルトブランチ内のDependencyが定義されたファイルが自動検知され、グラフ化されて表示されています。異なるディレクトリ階層にある複数プロジェクトがすべて検出されていますね。

[Dependabot]でDependabotを有効化すると、Dependabot configuration fileに基づいた自動実行が有効になります。この機能がDependabot version updatesです。有効化してみます。

有効化されました。さらに[Create config file]をクリック。

するとDependabot configuration fileを作成するCommit画面が開きます。

configurationのプロパティは必須のものだと次の通りです。

  • package-ecosystemでは、チェックをして欲しいPackage managerの種類を指定します。
  • directoryでは、チェック対象としたいパスを指定します。
  • schedule.intervalでは、チェックの実行頻度を指定できます。日次、週次(曜日の指定可)、月次の間隔を設定できます。

今回は次のようにしました。

.github/dependabot.yml

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"

使用可能なプロパティ一覧については以下をご確認ください。

configuration fileが作成(default branchにcommit)されるとDepandabotによるチェックが開始されます。

しばらくするとDependencyをバージョンアップするPull Requestが作成されています。タイトルからどのパッケージをいくつからいくつへアップデートする変更であるかが分かります。

ちなみにPull Request自動作成時にはメールでの通知が届きます。

作成されたPull Requestを見てみると、パッケージのアップデートのRelease notes、ChangelogおよびCommitsが一箇所で確認できるようにまとめられています。

Files changedで差分が確認できます。

必要に応じてこのPull RequestのブランチをローカルにPullして動作確認を行い、問題なければマージします。

マージしてPull Requestを1つクローズできました。残りのPull Requestについても順次対応していくことになります。

ちなみに、Dependabot version updatesで同時にオープンとなるPull Requestの数は既定で最大5つです。今回のチェックでは5つより多くのバージョンアップがあったためこの画面でWarningが出ています。次回チェック時にアップデートがあればまた同時オープンが最大5つとなるようにPull Requestが自動作成されます。

追記:次回のチェックでちゃんとまたオープン数が最大5つになるようにPull Requestが自動作成されていました。

おわりに

GitHubでDependabot version updatesを使ってDependencyのアップデートをチェックしてみました。

DependencyのアップデートのPull Requestを自動作成してくれるのはとても便利ですね。これによりOSSに含まれる脆弱性の早期発見/対処もできそうです。しかしアップデートはパッケージ毎になるので数が多い時は大変そうです。一つのPull Requestにまとめてくれる設定などはあるのでしょうか。引く続き触ってみます。

追記:Dependabot alerts/Dependabot security updatesについてはこちら

Dependabot alerts/Dependabot security updatesについても書きました。

以上