Renovate Custom Manager × JSONata で独自 YAML のバージョン更新を自動化する

この記事は kintone の生成 AI チームで連載中の kintone AIリレーブログ 2026 の 11 本目の記事です。 リレーブログでは、生成 AI チームのメンバーが AI トピックに限らずさまざまなことについて発信していきます。


こんにちは!

kintone 生成 AI チームの 386jp です。

以前の記事「cdk8s をもっと使いこなす - kintone AI チームの活用 Tips」にて、 Renovate で独自の YAML ファイルを使って、 Helm Chart やコンテナイメージのバージョン更新を行っている取り組みについて紹介しました。まだご覧になっていない方はぜひご覧ください。

この記事では、そのときに活用した Custom Manager について、どういった設定で使っているのかを紹介します。

Renovate の Custom Manager とは

Custom Manager とは、依存関係の検出方法や更新方法をカスタマイズできる Renovate の機能です。これを使うことで、 Renovate が提供する標準的な更新方法では対応できないような、独自のルールや設定を実装することができます。

よくある活用例としては、既存の Renovate ルールでは更新できないバージョン指定を、正規表現を用いて検出対象にしたり、標準のマネージャーが対応していない独自のファイル形式からバージョン情報を検出して更新したりすることが挙げられます。

kintone 生成 AI チームでの活用方法

以前の cdk8s の記事でも紹介した通り、 Helm Chart やコンテナイメージのバージョンを更新するために、 kintone 生成 AI チームでは Custom Manager を活用しています。

例えば、生の Kubernetes マニフェスト (YAML)や、 Docker Compose の設定ファイル (compose.yml など)は、標準的な Renovate のルールを用いることで更新できますが、 cdk8s 上で管理している場合、 TypeScript や Python のコード内にバージョン情報が埋め込まれていると、標準的な Renovate のルールでは更新できません。

そこで、 cdk8s を導入する際、 Helm Chart やコンテナイメージのバージョンを、以下のような独自の YAML ファイルにまとめて管理するようにしました。

# config/versions/common.yaml
core:
  # Helm Charts
  my-awesome-helm-chart-oci:
    type: oci
    repo: example.com/my/awesome-helm-chart
    tag: v0.1.0
    digest: sha256:my-awesome-helm-chart-digest
  my-awesome-helm-chart-http:
    type: helm
    repo: https://example.com/my/charts
    chart: my-awesome-chart
    version: v0.1.0
  # Container Images
  my-awesome-container-image:
    type: oci
    repo: example.com/my/awesome-image
    tag: v0.1.0
    digest: sha256:my-awesome-image-digest

ただし、このような YAML 形式は、 Renovate の標準的なルールに則っているわけではないので、 Renovate による自動更新は行われません。そこで、 Custom Manager を用いて、この YAML ファイルを解析し、 Helm Chart やコンテナイメージのバージョンを更新するようにしました。

Custom Manager の設定: JSONata を使う

みなさんは JSONata をご存知でしょうか? JSONata は、 JSON データを操作・変換するための軽量なクエリ言語です。 Renovate の Custom Manager では、 JSONata を用いて、独自の YAML ファイルから更新対象のバージョン情報を抽出し、更新を行うことができます。 JSONata を用いることで、正規表現を使った Custom Manager よりも扱いやすく、より確実に更新作業が行えます。

やることはシンプルで、入力の YAML ファイルの各エントリを datasourcedepNamecurrentValue などのフィールドを持つオブジェクトに変換する JSONata クエリを書くだけです。あとは Renovate がそのオブジェクトをもとにレジストリを確認し、更新の PR を自動で作成してくれます。詳しくは Renovate の JSONata Manager のドキュメント を参照してください。

例えば、先程の YAML ファイルをベースに、以下のように書くと、 typehelm のエントリを抽出し、 Helm Chart のバージョン情報を Renovate に渡すことができます。

$.**[type = "helm"].{ "datasource": "helm", "depName": chart, "currentValue": version, "registryUrl": repo }

この設定を、 Custom Manager の設定として組み込むと、以下のようになります。

{
    "customManagers": [
        {
            "customType": "jsonata",
            "fileFormat": "yaml",
            "managerFilePatterns": ["/^config/versions/.+\\.ya?ml$/"],
            "matchStrings": [
                "$.**[type = \"helm\"].{ \"datasource\": \"helm\", \"depName\": chart, \"currentValue\": version, \"registryUrl\": repo }",
                "$.**[type = \"oci\"].{ \"datasource\": \"docker\", \"depName\": repo, \"currentValue\": tag, \"currentDigest\": digest }"
            ]
        }
    ]
}

なお、 Renovate 43.45.1 以前では、 JSONata を用いた Docker イメージのハッシュ更新がうまくできないバグがありましたが、 renovatebot/renovate#38308 にて修正されました。

余談: cdk8s でのバージョン情報 YAML ファイルとの連携について

私たちの cdk8s コードベースでは、以下のようなユーティリティ関数を用意しておくことで、新たな Helm Chart やコンテナイメージを導入する際に、バージョン情報 YAML ファイルから必要な情報を簡単に取得できるようにしています。

/**
 * OCI イメージのタグを `tag@digest` 形式にフォーマットする
 */
export const formatImageTag = (dep: OCITypeDep): string => {
    return dep.digest ? `${dep.tag}@${dep.digest}` : dep.tag;
};

/**
 * OCI イメージの名前を `repo:tag@digest` 形式にフォーマットする
 */
export const formatDockerImageName = (dep: OCITypeDep): string => {
    return `${dep.repo}:${formatImageTag(dep)}`;
};

/**
 * OCI イメージの URI を `oci://repo:tag@digest` 形式にフォーマットする
 */
export const formatOCIUri = (dep: OCITypeDep): string => {
    return `oci://${formatDockerImageName(dep)}`;
};

まとめ

今回は、 Renovate の Custom Manager について、 kintone 生成 AI チームでの活用事例を交えながら紹介しました。

  • Custom Manager を使うことで、標準のマネージャーでは対応できない独自の YAML ファイルからも、 Helm Chart やコンテナイメージのバージョンを自動更新できる
  • JSONata を活用することで、正規表現ベースの設定よりも柔軟かつ確実にバージョン情報を抽出できる
  • cdk8s と組み合わせる際も、ユーティリティ関数を用意しておくことでバージョン情報 YAML ファイルとの連携をシンプルに保てる

Renovate の Custom Manager は、独自のインフラ管理ツールやファイル形式を持つチームにとって非常に強力な機能です。ぜひ活用してみてください!

We are hiring !!

kintone の AI 機能を、一緒に作りませんか?

kintone 生成 AI チームでは、AI 機能はもちろん、それを支えるインフラ基盤の構築・運用に携わるエンジニアを募集しています。 kintone の AI 機能でユーザーに最高の価値を届けることに挑戦してみませんか?

新しい技術にワクワクする方、チームで議論しながら最適な解を見つけることが好きな方、自分たちの基盤が開発者やユーザーの価値につながることにやりがいを感じる方――そんなあなたのご応募をお待ちしています!

cybozu.co.jp

【変更履歴】 2026年3月31日
本文中の JSONata 式が意図した通りに動いていなかったため、Helm Chart の JSONata の例およびRenovate Custom Manager の例を訂正しました。