GitHubにDependabotを導入して依存ライブラリを自動アップデートする

2021.08.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

吉川@広島です。

掲題の通り、GitHubのDependabot機能をONにして、「プロジェクトで利用している依存ライブラリで新しいバージョンが出たら自動でPRを作ってもらう」というのをやりたいと思います。

知らなかったのですが、DependabotってGitHubに買収されていたんですね。

皆さんと一緒に、より連携したコミュニティを築いていく - GitHubブログ

TL;DR

設定手順は公式ブログGIFアニメを見れば一発でわかると思います。

ハマった点

marketplaceにGitHub Previewがない

ググって調べていると、GitHub MarketplaceからDependabot Previewを入れるという情報が見つかります。しかし、実際にmarketplaceで検索してもDependabot Previewなるものは出てきません。

Goodbye Dependabot Preview, hello Dependabot! | The GitHub Blog

こちらによるとDependabot Previewは現在はなくなっているようですので、後述する手順で実施する必要があります。

Settings>Security&analysisでもない

GitHubリポジトリのSettings>Security&analysisを見ると、

  • Dependabot alerts
  • Dependabot security updates

というものがあり、「これをenableにするのか!」と思いましたが、実はこれも違います。

Keep all your packages up to date with Dependabot | The GitHub Blog

こちらによると、「依存パッケージに脆弱性が見つかった場合に警告・更新を行う」という機能のようです。もちろんこれもONにしておくと利益があるものですが、今回やりたいこととはちょっと違います。

正しい手順

Insights>Dependencygraph>Dependabotを見る

見るべきはSettingsではなくInsightsでした。Insights>Dependency graph>Dependabotを選択します。

「Enable Dependabot」を押下します。

.github/dependabot.ymlファイルを作ってCommitとPush

「Enable Dependabot」を押下するとこのような表示に変わります。

  • 「Create config file」を押下してGitHub UI上で設定ファイルを作成しCommitする
  • ローカルリポジトリで設定ファイルを作成しCommit&Pushする

のどちらかで設定ファイルである.github/dependabot.ymlを作成しましょう。今回は後者の方法を採りました。

mkdir .github
touch .github/dependabot.yml

ファイル内容は以下としました。

# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: 'npm' # See documentation for possible values
    directory: '/' # Location of package manifests
    schedule:
      interval: 'daily'

今回はTypeScriptのモノレポプロジェクトなので、 package-ecosystem: 'npm' としました。こちらは使用言語などに応じて適宜変更してください。

git add . でステージに上げてCommitとPushを行いました。

待つ

そうするとこのように「Checking now」となりますので、待ちましょう。自分の場合は1〜2時間程度待つと表示が代わり、DependabotによるライブラリアップデートPRの作成が始まりました。

以上で完了です。

自動でmonorepoも認識してくれる

「・・・」の部分にカーソルを当てると依存関係を管理しているファイル一覧を列挙してくれます。

今回はyarn workspacesを使ったモノレポ構成だったのですが、ちゃんと各workspaceのpackage.jsonまで見に行ってくれているようです。

参考