Dependabot を使ってGitHubのGemfileのアップデートのPRを作る
目的
RailsプロジェクトのGemfileを最新に保つべく、Dependabotを使う
手順
/.github/dependabot.yml
をdefault branchにcommitするだけです。
documentは下記です。
自分の設定
以下自分が使っている設定です。
version: 2
updates:
- package-ecosystem: "bundler"
directory: "/"
target-branch: "develop"
schedule:
interval: "weekly"
day: "friday"
time: "00:32"
timezone: "Asia/Tokyo"
versioning-strategy: "lockfile-only"
open-pull-requests-limit: 2
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "friday"
time: "00:32"
timezone: "Asia/Tokyo"
versioning-strategy: "lockfile-only"
open-pull-requests-limit: 2
説明
version
The file must start with version: 2
versionは2にしてくださいとのことなので 2です。
package-ecosystem
アップデートを管理したいパッケージマネージャを指定します。
- bundlerであれば
bundler
- npmであれば
npm
です。
他のライブラリについては上記のリンクから参照してください。
directory
パッケージマネージャの設定ファイルがあるフォルダです。
多くのプロジェクトですと /
で良いかと思います。
複数のアプリを1つのリポジトリで管理している場合は、アプリ毎のフォルダを指定してください。
target-branch
アップデートを検知するブランチです。開発を行っているブランチを指定すると良いかと思います。今回はdevelopで開発をしているという過程で、 develop
としました。
こうすることで、ライブラリのバージョンアップのpull requestは 以下のように developブランチに対して行われます。
schedule
timezone
これを指定しない場合は時間はすべてUTCです。
"Asia/Tokyo"
をしておけば、日本時間で記述できるので便利です。
time
Dependabotが動く時間を指定します。
interval
weeklyだと毎週です。dailyだと毎日です。
weeklyの場合は曜日を指定できます。
versioning-strategy
lockfile-only
としておけば、Gemfileの範囲内でライブラリをアップデートしてくれます。
Gemfile.lockがアップデートされます。
Gemfileの記述は何らかの意味があってなされているのでそちらには手をつけません。
open-pull-requests-limit
一度に作成するPR数の最大値です。
defult各パッケージマネージャ毎に5個です。
今回のyml例では、2にしています。これは、一度に5つあったとしても結局スプリントないで対処できないので、少なめにしました。
動作例
上述のymlをmasterにcommitした結果いかのPull requestがさくせいされました。
bunlderから2個
npmから2個
のPRが作られていることがわかります。
このPRはcloseする事ができます。ただし、次versionアップまではDependabotからの通知が行われなくなりますバージョンアップに気づけなくなるというこことになってしまうので、すこし慎重にcloseの判断をしてください。
Discussion