1
0

Renovateでサポート外マネージャのバージョン管理をする

Posted at

こんにちは、サーバエンジニアの池脇と申します。

私の担当プロジェクトではRenovateを使って依存関係のあるパッケージのバージョン管理を行なっています。
ところが全てのパッケージがRenovateに対応しているわけではないため、対応外のパッケージが更新されると自動生成時にバージョン更新が入ってしまいノイズになってしまうことがありました。
今回はそのノイズを抑制するためにRenovate対応外のパッケージをバージョン管理できるようにします。

Renovateとは

上述の通り、プロジェクト内の依存関係にあるパッケージのバージョン管理を自動で行ってくれるツールです。自動マージも可能ですが、弊プロジェクトではPRを作成し確認後にマージする方式で運用しています。
以下のような状況を解決する手段として有用です。

  • ライブラリが古いバージョンのまま運用され、固定されがちである
  • 定期的にバージョンを手動でチェックして更新している

Renovate対象外のバージョン管理はどうやるのか?

最初に書いた通り、今回はRenovateに対応していないパッケージのバージョン管理を行います。(今回Renovateの使い方については解説しないため、気になる方は公式等をご確認ください)
どのように対応するのか、まずは実際の管理対象(buf.gen.yaml)と設定ファイル(renovate.json)から抜粋したものをご覧ください。

version: v1
plugins:
  - plugin: buf.build/protocolbuffers/go:v1.34.1 # renovate: depName=protocolbuffers/protobuf-go
    out: generated
  - plugin: buf.build/connectrpc/go:v1.16.2 # renovate: depName=connectrpc/connect-go
    out: generated
  - plugin: buf.build/bufbuild/validate-go:v1.0.4 # renovate: depName=bufbuild/protoc-gen-validate
    out: generated

buf.gen.yamlから抜粋
  "customManagers": [
    {
      "customType": "regex",
      "fileMatch": ["^buf.gen.yaml$"],
      "matchStrings": [
        "- plugin: buf\\.build/(.*):(?<currentValue>[^\\s]+) # renovate: depName=(?<depName>[^\\s]+)"
      ],
      "datasourceTemplate": "github-releases"
    }
  ]

renovate.jsonから抜粋

今回はProto APIマネージドツールである「Buf」のプラグインのバージョンをRenovateで管理します。
もちろん既存では対応していないファイル形式であるためcustomManagersを利用して対応します。

今回使用しているcustomManagersの各オプションについては次の通りです。

  • customType
    • regex固定
    • 指定せずとも動くが警告が出るので設定しましょう
  • fileMatch
    • 必須オプション
    • 管理対象にしたいパッケージのバージョンが記載されているファイルの名前を指定
  • matchStrings
    • 必須オプション
    • 正規表現で管理対象にしたいパッケージのバージョンが記載されている文字列を取得
    • 名前付きのキャプチャ(<currentValue><depName>)を使用
    • <currentValue>については必ず含める必要がある
    • <depName>datasourceで参照する名前をキャプチャする(今回はGitHubのリポジトリ名)
  • datasourceTemplate
    • matchStringdatasourceをキャプチャしていない場合にこちらで指定
    • 今回はgithub-releasesを参照していますが、npm等、自分の参照したいもの記載

上記の例のように記載することで該当するGitHubリポジトリを参照してBufプラグインのバージョンを管理することができます。

スクリーンショット 2024-06-28 16.39.51.png
Renovateが自動的に作成しているIssueにも反映されていることが確認できました!

まとめ

今回はRenovateでサポートされていないパッケージのバージョン管理を行う方法をご紹介しました。
customManagersを使うことで色々なファイルに対応可能なので、バージョン管理にお困りの方は是非試してみてください。

以上、池脇でした。

参考

1
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
1
0