概要
どうも、@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を作ってくれます。
🎯 注意点
最後に、一個だけ注意点があります。
dependabot
はpubspec.yaml
およびpubspec.lock
を監視しています。
そのため、firebase
を始めとする、iOS
のライブラリをパッケージ内で利用している場合は
一度アプリをビルドし、Podfile.lock
の変更をPRに取り込んで上げる必要があります。
最後に
いかがでしたでしょうか?
セットアップは、1分やそこらで終わってしまうのに強力なdependabot
。
一度お手元のプロジェクトでも取り入れてみてくださいね!
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント