@potato4d が @sunecosuri と @jacksmam0 に、オンプレミス環境で構築・運用している Self Hosted 版 Renovate について話を聞きました。
ゲスト紹介
- @sunecosuri
- LINE Growth Technology (LINE GT)のフロントエンドエンジニア
- LINE NEWS の toB 向けの CMS などの開発を担当
- @jacksmam0
- LINE Growth Technology (LINE GT)のフロントエンドエンジニア
- Official Sticker Manager の開発を担当
Renovate
- パッケージの更新管理支援ツール
- 更新チェック・更新作業をどちらも大きく支援する
- 更新チェック
- 一定の間隔で依存関係のバージョンアップデートを調査
- 更新があった場合、リリースノートを集約して Pull Request を発行
- 更新作業
- アップデートがあった場合の自動 rebase
- CI がグリーンの場合の自動マージ
- major / minor / patch など変更の大きさごとの PR 集約
- 更新チェック
UIT での構築の経緯
- LINE GT 内の Slack スレッドでパッケージのバージョン管理が話題に
- 話を聞いてみた結果、以下の傾向にあることがわかった
- 脆弱性があった場合にアップデートするだけ
- 欲しいパッケージをピンポイントで調査してアップデート
- もっとパッケージをライトに上げたい
- Renovate を構築すると良いのではという話があがってきた
- LINE では GitHub Enterprise を利用しているため、SaaS 版は使えない
- 年末で少し工数が余っていたので、 @sunecosuri @jacksmam0 @potato4d の三人で取り組むことに
- Renovate を構築すると良いのではという話があがってきた
Renovate 構築での悩み
- Renovate には構築方法が複数あり、調査から始まった
- https://docs.renovatebot.com/self-hosting/
- CLI/Node.jsパッケージ/Dockerイメージの3つ
- はじめは Docker ベースで構築を進めていたが、違いがないことが判明
- 現在は CircleCI cron にて定期実行する形で、メンテナンスフリーな形で構築している
Renovate 運用での悩み
- 提供側と利用者側で Node.js のバージョンが同じとは限らない
- 直近だと Node.js v16 利用プロジェクトで package-lock.json のバージョンが違った
- Renovate では v1 ベースで Pull Request を発行しているが、利用者側は v2
- 毎回大きな diff が発生する問題が生じており、調査を続けている
- Renovate 本家に問題がある場合の原因調査が大変
- 本家の Issue を見に行って似たような問題があるかを調査することが主
- そもそもオンプレミスで構築している人が多くないため、情報がないことも
- OSS のアプリケーションを運用するのとは違った、影響範囲の広さを実感した
利用者側での感想
- 良くも悪くもアップデートをサボっていることが可視化される
- メンバーに余裕がないと心理的な負担は結構ある
- ワークしている状態だと健全に依存がアップデートされていって良い
- 特に devDeps は上げやすい
- LINE の場合、専任のQAチームがいるのでどこまでQAしてもらうかが悩みどころ
- 他社の事例も聞いてみたい