Blog株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。HRプロダクト領域の開発を担当しています。プライベートでも『Hackaru』という時間を管理できるアプリを開発しています。今回は初めてブログを書かせていただきます。本稿では、依存パッケージの更新業務のフローを改善した話を紹介します!依存パッケージの更新とはHRプロダクト開発チームでは、毎週火曜日〜金曜日に依存パッケージの更新をしています。Gemfileやpackage.jsonのような、プロダクトで使用しているパッケージをバージョンアップする作業です。中には脆弱性を修正するような重要な更新も含まれているので、定期的にアップデートするのは大切な作業になります。Dependabotを使用しています。依存パッケージのバージョンアップには、「Dependabot」を使用しています。「Dependabot」を使えば、依存しているパッケージの新しいバージョンを検知して自動でプルリクエストを作成してくれます!とても便利。設定画面から検知する間隔も設定できます。HR開発チームでは、毎週月曜日にプルリクエストを作成するように設定しています。現状のフローはこんな感じです。月曜日に自動作成されたプルリクエストを担当者がチェック。問題なければリリースするという流れです。毎週、持ち回りで担当者を1人割り当てる。1人の担当者がDependabotが作成したPRを全部レビュー。問題なければmasterにマージ。すべてmasterにマージしたら、本番へリリース作業を行う。シンプルですね!で、何が問題なの?フローはとても分かりやすいのですが、以下のような課題がありました。週によってはPRの数にバラツキがある。多いときだと30件以上。多すぎると担当者が大変。担当者によって得意分野の差があるので、1人ですべてのPRをレビューするのは限界がある。それを1人の担当者で全て見るというのも無理がありました。オートマージ機能を使おう。Dependabotの機能一覧をざっくり見ているとオートマージ機能というものが。https://dependabot.com/docs/config-file/#automerged_updatesDependabotがPRをだしたうえでマージまで自動でしてくれます。これなら、レビューするプルリクエストの件数自体を減らせそうです。テストや開発環境でしか使用しないパッケージはオートマージするようにしました。all設定も簡単ですね。ちなみに設定ファイルの書式が正しいかどうか下記のページで検査できます。本番に投下する前に、事前に検査しておくと安心です。https://dependabot.com/docs/config-file/validator/ついでにオートマージ先のブランチの作成も自動化しよう。マージ先にするブランチを指定する必要があります。HR開発チームでは、マージ先にするブランチは、masterブランチではなく別のブランチにしています。いうのも、masterブランチにマージするには、事前にチームのレビューが必須の運用になっているからです。GitHubの設定でも1件以上のApproveが必須の設定になっていて、Dependabotのオートマージ先にmasterブランチを指定してもオートマージはできないようになっています。そのため、オートマージ先にする一時的なブランチを作成することにしました。使ってブランチも自動で作成するようにしました。masterブランチの最新を取り込むようにしました。00:00に実行します。dependabotの実行が月曜日のため、日曜日には作成しておく。master毎週日曜日になると、CircleCIが自動でmilestone_dependabotブランチを作成してくれます。月曜日にDependabotがプルリクエストを自動で作成。日曜日に自動作成されたmilestone_dependabotブランチに自動でマージされます。レビュー作業もチーム全員でやろう。プルリクエストのレビューの方法も見直しました。チーム全員でPRの確認作業をすることにしました。1人ですべてのPRをレビューすると、時間がかかる課題がありました。20分〜30分ほどの時間で全てのプルリクエストをレビューすることができるようになっています。いう課題はついつい保留にしてしまいがちですが、保留にせず取り組むことが大切ですね。--マネーフォワードでは、エンジニアを募集しています。ご応募お待ちしています。Appsを導入しましたこんにちは。読者になるこのブログについてはてなブログをはじめよう!moneyforwardDevさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。