2021/08/13 に公開 941 views

このエピソードについて

@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 には構築方法が複数あり、調査から始まった
  • はじめは 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してもらうかが悩みどころ
    • 他社の事例も聞いてみたい

Refs

  • BGM&SE
    • 魔王魂/騒音のない世界/OtoLogic