まえがき
本記事は、DMM WEBCAMP Advent Calendar 2023 3日目記事です。
Ruby on Railsを中心に、DWCメンター・卒業生が記事を投稿しておりますので、是非他の記事もご確認ください!
はじめに
こんにちは、DMM WEBCAMP メンターの @ukwhatn です。
昨日に引き続いての担当となりますが、今日はRuby on Railsにおけるdependabotの使い方について説明していきます。
Depandabotとは?
Depandabotとは、GitHubが提供しているボットツールで、プロジェクトが依存しているパッケージ(Gemなど)の脆弱性やバージョンアップを自動で検知し、アップデートのためのPull Requestを自動作成してくれるものです。
また、非常に多くの言語やパッケージ管理システムに対応しており、Gemfileやpackage.jsonなどを読んで依存パッケージを解析してくれます。
使い方もシンプルで、.github/depandabot.ymlに構成設定を記載し、リポジトリのSettingsからDependabotを有効化することでセットアップできます。
RailsにおけるDependabotの構成設定
私がよく使う.github/depandabot.ymlの内容を示します。
version: 2
updates:
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "daily"
ignore:
- dependency-name: "rails"
update-types: ["version-update:semver-major"]
おそらく読めばわかるのではないかと思いますが、
package-ecosystem: "bundler"
- bundler(Gemfile)によってバージョン管理されたプロジェクトであることを示す
- これにより、Gemfileを勝手に読みに行くようになります
directory: "/"
- Gemfileが置いてあるディレクトリを指定
schedule:
- Dependabotの起動タイミングを指定
- 今回は1日1回にしています
ignore:
dependency-name: "rails"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
- ここでは、Gem"rails"のmajor-update(5.x→6.xなど)/minor-update(6.0から6.1など)の両方をignoreしています
- この場合、
6.0.1→6.0.2などのアップデートは検出されます- 必要であればminorだけignoreから外すなど、適宜変更してください
.... までの設定をこの数行で行っています。
更にカスタマイズしたい場合は、 公式docsを確認してください。
導入手順
ここからは、具体的な導入手順について説明します。
まず、導入したいリポジトリのSettingsからCode security and analysisを開きます。
Dependabot version updatesをEnableにするとエディタが開きますので、上記の構成設定を投入し、commitします。

これだけでDependabot version updatesの導入は完了です。
脆弱性の検出まで行いたい場合は、先程のページからDependabot security updatesを有効化しましょう。
security updatesはDependency graphおよびDependabot alertsに依存しているので、勝手に全部Enableになります。
あとは、Dependabotが定期的にバージョンアップの検出を行い、PRを作ってくれるのを待つだけです。
ほっとくと一瞬で貯まるので、定期的に確認しましょう!

以上、ハンズオン的な紹介となりましたので、詳しく知りたい方は以下の公式ドキュメントを確認してみてください!

