【Flutter】dependabotを導入したので手順と使い方を解説してみる

Dart

概要

どうも、@daiki1003です!

今年の4月、ようやくDependabotのbetaがサポートされたと言うことで
導入までの手順を解説してみたいと思います。

とは言っても、僕自身導入してみてこんなに簡単なの?と思ったので導入を検討されている方は
ぜひ入れてみていただけると良いと思います!

では、解説していきましょうー!

📝 dependabot.yaml

まずは、yamlファイルを追加してみましょう。

.github/dependabot.yamlの追加

touch .github/dependabot.yaml

中身の編集

中身を以下の様に変更します。

version: 2
enable-beta-ecosystems: true
updates:
  - package-ecosystem: "pub"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10

公式では、open-pull-requests-limitの記述はありません。
open-pull-requests-limitは、dependabotが一度に作成出来るPRの作成数の制限です。
デフォルトでは5件になっています。

ある程度の規模感のプロジェクトだと、5個以上アップデート対象のパッケージが存在することは
全然あるので10件くらい作ってもらっても良いと思います。

PR作成&マージ

上記ファイルを追加したPRを作成し、メインブランチ(ほとんどの場合develop)にマージします。

dependabotが動いているかの確認

なんと、ここまでで導入は終わりです。
めっちゃ簡単じゃないですか?笑

では、早速正しく動いているか確認してみましょう。

対象のレポジトリページから、「Insights」→「Dependency graph」→「Dependabot」の順に開きましょう。

上手くいっていれば、上記画像の様になり少し待つとPRが作成されるはずです。
(アップデート出来るパッケージがなければもちろん作成されません)

👀 作成されたPRを見てみよう

まず、どんな風にPRが作成されるか確認してみましょう。

こんな感じに作成されます。
なにやらすごい丁寧ですよね。

ちょっとだけ解説していきます。

Changelog

変更内容全てのChangelogがここから確認できます。

Commits

同様に、変更内容に関するコミットが全て確認できます。

依存関係

パッケージは、他のパッケージに依存していることが多いです。
dependabotは依存パッケージもアップデートする必要がある場合は、それらも同時にPRに混ぜてくれます。

自動rebase?

これは、少し自信がないのですが。
複数個のdependabotによるPRが作成され、どれか一つをマージすると
残ったPRのうちどれかを自動でrebaseしてくれる様です。
詳しい方、何か間違っていたり条件を知っている方がいらっしゃったら教えてください。

🏄‍♂️ dependabotを活用してみよう

さて、作成されたPRは自前で作ったパッケージのアップデートPRと何か違うのでしょうか?
誤解を恐れず言えば何もかもが違います。(どーん)

なんでもっと早くやらなかったんだろうとすごく後悔していますw

では、次にdependabotコマンドについて解説していきます。
PR上に@dependabot [command]とコメントすることで特定のコマンドを使うことができます。

@dependabot merge

該当のPRをマージしてくれます。
また、CIがまだ通ってない場合は、CIが通り次第自動でマージしてくれます。
これが地味にめちゃくちゃ便利…!

CIやリベースを待たずにマージコマンドを叩いた場合は、こんな感じで
「今実行中のタスクが完了したらマージするよー」って教えてくれます。

@dependabot rebase

該当のPRをベースブランチに対してrebaseしてくれます。
これの良いところはコンフリクトを自動で解消してくれるところです。
パッケージのアップデートを連続的に行っていると、どうしても同じファイルをいじることになるのでコンフリクトしがちです。
dependabot君はそんなコンフリクトも自動でマージしてくれます。

なお、リベース中はこんな感じでリベースしてるよーって教えてくれます。

主な使い方はこれだけ

基本的には、上記2個のコマンドがあれば十分でしょう。

@dependabot rebaseでリベースをしてもらう
・変更内容を見て approve する
@dependabot mergeでCIが通り次第、マージしてもらう

ひたすらこれを繰り返していく感じになるかなと思います。

10個以上あった場合は?

open-pull-requests-limitで制限した個数よりも多くのパッケージがアップデート対象となる場合もあるでしょう。
導入したばかりの時とかですね。
そんな時は、何個かPRをマージするとまたdependabotが反応してPRを作ってくれます。

🎯 注意点

最後に、一個だけ注意点があります。

dependabotpubspec.yamlおよびpubspec.lockを監視しています。
そのため、firebaseを始めとする、iOSのライブラリをパッケージ内で利用している場合は
一度アプリをビルドし、Podfile.lockの変更をPRに取り込んで上げる必要があります。

最後に

いかがでしたでしょうか?
セットアップは、1分やそこらで終わってしまうのに強力なdependabot
一度お手元のプロジェクトでも取り入れてみてくださいね!

誰かのお役に立てば。

Twitterフォローお願いします

「次回以降も記事を読んでみたい!」
「この辺分からなかったから質問したい!」

そんな時は、是非Twitter (@daiki1003)Instagram (@ashdik_flutter)のフォローお願いします♪

Twitterコミュニティ参加お願いします

Twitterコミュニティ「Flutter lovers」を開設しました!
参加お待ちしております😁

☕️ Buy me a coffee

また、記事がとても役に立ったと思う人は
コーヒーを奢っていただけると非常に嬉しいです!

コメント

タイトルとURLをコピーしました