2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Renovateでライブラリの更新を自動化する

Posted at

whitesource_renovate_660_220.jpeg

Renovateとは

時間の経過とともに古くなっていくライブラリの更新を自動化してくれるツール

具体的には以下のようなことをしてくれます。

  • リポジトリをスキャンして依存関係を検出する
  • 依存関係の更新があるかどうかを確認する
  • 依存関係を更新するためのコミットとマージ/プルリクエストの作成

様々なプラットフォーム、マネージャーに対応しています。

Renovate良いポイント

  • renovateを適用したいリポジトリを選択できる
  • プルリクを受けるスケジュールを作成できる
  • issueに可視化できるダッシュボードが追加される
  • リリースノートを表示してくれるので変更点が一目でわかる
  • 似たようなパッケージをグループ化してプルリクしてくれる
    • babel関連のパッケージなどはデフォルトでまとめてくれる
    • まとめたいパッケージは自分でも指定できる
  • Node.jsのバージョンにも対応
    • volta(package.jsonのvoltaフィールドに対応)
    • LTSのリリースのアップグレードを提供してくれる

インストール

公式を参照しながらやればすぐ終わる

共有プリセットを作る

全てのリポジトリで同じ設定が重複しないように共有プリセットを作ることができます。

renovateの設定を変更したいときに、個々のリポジトリにあるrenovate.jsonを変更することなく、一つのファイルで設定を管理することができます。

GitHubで共有プリセットを作成する

  1. 新しいリポジトリを作成する(例: renovate-config
    1. リポジトリ名はなんでもOK。公式を参考にrenovate-config を作成する
  2. renovate-configリポジトリにdefault.jsonを作成する
    1. デフォルトではdefault.jsonを確認します。名前付きプリセットを使用することもできますが、今回は割愛します
    2. 共有可能なプリセットはJSON形式のみ使用可能です
  3. default.jsonにrenovateの設定を書いてデフォルトブランチ(例: main)に適用する
    1. renovateはデフォルトブランチにあるdefault.jsonファイルを探します

これで共有プリセットの完成です(簡単!)

共有プリセットを使用する

renovateを適用したリポジトリにあるrenovate.jsonを以下に書き換えます。

「github>ユーザー名/リポジトリ名」のようにextends配列で参照するだけ。

{
  "extends": ["github>yukiji/renovate-config"]
}

今後renovateの設定を変更したいときはrenovate-config/default.jsonを変更するだけなので管理が楽になります。

色々設定してこうなった

一旦個人開発はこちらで運用してみようと思います。

下記の参考資料にある各記事も参考にしてみました。

renovateはデフォルトのconfig:baseに既に色々と設定されています。

基本的にconfig:baseをオーバーライドしていく形で設定していきます。

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json", //設定項目の補完
  "extends": [
    "config:base"
  ],
  "timezone": "Asia/Tokyo", // タイムゾーンを日本仕様に
  "schedule": [
    "every weekend" // プルリクは週末(土日)だけ
  ], 
  "prConcurrentLimit": 10, // プルリクの上限は10まで
  "packageRules": [
    {
      "groupName": "webpack family", // webpack関連はまとめて1つのプルリクにする
      "matchPackagePatterns": [
        "webpack",
        "-loader$"
      ]
    }
  ]
}

renovateは設定項目数がめっちゃあります。(一応全部見ました)

実際に運用してみて課題点などがあればその都度、公式ドキュメントを参考にしながら改善を加えていけばいいかなぁと個人的には思います。

まとめ

まだ運用して間もないですが、週末にプルリクが作成され、平日にリリースノートを見ながら適用していくスタイルが個人的にはフィットしてます。

ライブラリに対しての情報感度が高くなるものいいですね。

テストを書いて自動マージなんかも今後はやっていきたい〜。

Tips

renovate configをチェックする

renovateのconfigが正しいかチェックするツールがあります。

renovateパッケージに含まれるrenovate-config-validatorを設定ファイルがある場所で実行します。タイポしているとエラーで怒ってくれます。

ファイル名がdefault.jsonだと反応してくれないところが気になる。

$ npm i -g renovate
$ renovate-config-validator
INFO: Validating renovate.json
INFO: Config validated successfully 

後から適用したいリポジトリを選択する

  • GitHubのSettings -> Applications -> RenovateConfigureを選択
  • 初回インストールの手順と同じで、Renovateを適用したいリポジトリを全て選択するか個別に選択する

気になるconfigメモ

  • enabledManagers
  • prCreation
  • Monorepo Presets

公式ドキュメント

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?