Upgrade to Pro — share decks privately, control downloads, hide ads and more …

チームで進めるRenovate

 チームで進めるRenovate

E8e70cb2d667e6d0752f89ee645e3f21?s=128

katsutomu

May 20, 2021
Tweet

Transcript

  1. チームで進めるRenovate 2021.05.19 Radiotalk Tech Talk #2

  2. ⾃⼰紹介

  3. w ؔࠜࠀయ!LBUTVUPNV w ίωώτגࣜձࣾ"OESPJE&OHJOOFS w "OESPJEॻ͍ͨΓJ04ॻ͍ͨΓ w ࠷ۙ͸ίʔνϯάΛͯ͠·͢ ࣗݾ঺հ 

  4. さて

  5. ライブラリ更新うまくできて ますか?😄

  6. ママリアプリの状況 • 初回リリースは2014年8⽉で6年ちょい • ライブラリ総数:126 • 最新バージョン使⽤率:69%(88 / 126) ※2021/04時点

  7. ママリアプリの状況 • 初回リリースは2014年8⽉で6年ちょい • ライブラリ総数:126 • 最新バージョン使⽤率:69%(88 / 126) ※2021/04時点

    ⼈⼒では結構⼤変😱
  8. ママリアプリの状況 • 初回リリースは2014年8⽉で6年ちょい • ライブラリ総数:126 • 最新バージョン使⽤率:69%(88 / 126) ※2021/04時点

    楽しちゃおう😆
  9. チームで進めるRenovate

  10. アジェンダ

  11. アジェンダ • 課題の整理 • Renovateの紹介 • ママリアプリでの設定 • 進捗の共有 •

    まとめ
  12. 課題の整理

  13. 課題 • 古いバージョンを使い続 けるとリスクがある • 最新バージョンの機能を 使えず、選択肢を狭めて いる • ライブラリ更新を全て⼿

    動でやるのはキツイ
  14. Before / After • 古いバージョンを使い続 けるとリスクがある • 最新バージョンの機能を 使えず、選択肢を狭めて いる

    • ライブラリ更新を全て⼿ 動でやるのはキツイ • 最新バージョンに上げて リスクヘッジする • プロダクトや技術の選択 肢の幅を広げる • ライブラリ更新を(⼀部) ⾃動化して楽をしたい
  15. ⽬指すところ 定量⽬標 • ライブラリを100%最新バージョンにする + レガシーなライブラリは置き換える 獲得する能⼒ • ⼤規模なアップデートを進める⼒ •

    定常的にライブラリを更新する⼒
  16. ⽬指すところ 定量⽬標 • ライブラリを100%最新バージョンにする + レガシーなライブラリは置き換える 獲得する能⼒ • ⼤規模なアップデートを進める⼒ •

    定常的にライブラリを更新する⼒ Renovateを使おう👍
  17. Renovateの紹介

  18. Renovate is 何? • 依存関係の更新を⾃動化するツール • Multi-platform かつ multi-language •

    GitHub, GitLab, Bitbucket Cloud, Bitbucket Server, Azure DevOps and Gitea. • 更新があると⾃動でPull Requestが作られる
  19. None
  20. デフォルトルール • SemVerルール:ライブラリ毎にPRが分けられ、Patchは Minorと同列に扱われる • マルチプロジェクトも個別PRになる • PR作成スケジュールは「いつでも」 • 毎⽇24時間PRが作られる

    • reviewerの指定はされない
  21. SemVer補⾜ hogehogeライブラリが0.8.0で • 0.8.1 (patch) • 0.9.0 (minor) • 1.0.0

    (major) の更新があると ↓のPRが作られる • 0.9.0 (minor) • 1.0.0 (major)
  22. SemVer補⾜ hogehogeライブラリが0.8.0で • 0.8.1 (patch) • 0.9.0 (minor) • 1.0.0

    (major) の更新があると ↓のPRが作られる • 0.9.0 (minor) • 1.0.0 (major) minorにマージされて  0.8.1は作られない
  23. SemVer補⾜ hogehogeライブラリが0.8.0で • 0.8.1 (patch) • 1.0.0 (major) の更新があると ↓のPRが作られる

    • 0.8.1 (patch) • 1.0.0 (major)
  24. デフォルトルール(再掲) • SemVerルール:ライブラリ毎にPRが分けられ、Patchは Minorと同列に扱われる • マルチプロジェクトも個別PRになる • PR作成スケジュールは「いつでも」 • 毎⽇24時間PRが作られる

    • reviewerの指定はされない
  25. デフォルトルール(再掲) • SemVerルール:ライブラリ毎にPRが分けられ、Patchは Minorと同列に扱われる • マルチプロジェクトも個別PRになる • PR作成スケジュールは「いつでも」 • 毎⽇24時間PRが作られる

    • reviewerの指定はされない いい感じに使いたい😓
  26. ママリアプリでの設定

  27. ママリアプリでの設定 • 週1でPull Requestを作る • マルチプロジェクトはPull Requestをまとめる • パッチバージョン更新は全てのライブラリで Pull

    Requestをまとめる • 担当者は⾃動アサイン機能を活⽤
  28. 週1でPull Requestを作る • ⽕曜⽇の午後5時以降にスケジュール • 1時間に2つまで、上限10でPRを作る • 翌⽇のプランニングのために⽕曜⽇に作る

  29. マルチプロジェクトをまとめる • バージョニングを共有するライブラリでバラバラにPRが 来ると困る • updateTypesで対象レベルを指定できる

  30. Patch更新は⼀つにまとめる • Patchの更新は頻度が多く個別対応は⾟い • SemVer的には影響の⼤きい変更は少ない • たまに地雷踏むけど・・・ • ママリアプリは回帰テストで⼤事な機能はチェックして いる

  31. ⾃動reviewer指定を活⽤する • 個⼈もしくはteamでの指定が可能 • team指定で動かず苦戦中 • Github Appsへの権限が不⾜しているっぽい?

  32. で、どうなった?

  33. Before / After • ライブラリ総数:126 • 最新バージョン使⽤率:69% (88 / 126)

    ※2021/04時点
  34. Before / After • ライブラリ総数:126 • 最新バージョン使⽤率:69% (88 / 126)

    ※2021/04時点 • ライブラリ総数:125 • 最新バージョン使⽤率:58% ( 74 / 126) ※2021/05時点
  35. Before / After • ライブラリ総数:126 • 最新バージョン使⽤率:69% (88 / 126)

    ※2021/04時点 • ライブラリ総数:125 • 最新バージョン使⽤率:58% ( 74 / 126) ※2021/05時点 敗北😱
  36. 敗因 • PatchバージョンよりMinorのPR先に作られる => まとめたもので数を稼げない • ⾃動Reviewerの設定がうまくいっていない => 関⼼が下がり進捗が悪くな

  37. これから • PatchバージョンのPR作成の優先順位を上げて捌いてみる • ⾃動Reviewerの設定を動かして、⼀⼈当たり2つ/週で捌 く

  38. まとめ

  39. まとめ • ライブラリ⾃動化にRenovateをおすすめした • ママリアプリでの設定を紹介した • 敗因とこれからを紹介した

  40. ご清聴ありがとうございました

  41. Appendix

  42. • https://github.com/renovatebot/renovate • https://docs.renovatebot.com/configuration-options/ • https://github.com/ben-manes/gradle-versions-plugin