GitHubにDependabotを導入して依存ライブラリを自動アップデートする
吉川@広島です。
掲題の通り、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まで見に行ってくれているようです。