mcpField
V
versions-renovate

versions-renovate

github.com/ionfuryクラウド・DevOps2539 回インストール今日更新
リポジトリ

versions-renovate について

Kubernetes プラットフォームのリポジトリで依存関係のバージョンを管理するコーディングスキルです。Renovate の注釈やデータソースの選択、更新の検証とトラブルシューティングを説明します。

主な機能

  1. 01Renovate 注釈の構文
  2. 02データソース選択の指針
  3. 03バージョンタグの確認
  4. 04依存関係のグループ化
  5. 05検証とトラブルシューティング

活用シーン

  1. 01Helm chart バージョンの追加
  2. 02コンテナイメージタグの追跡
  3. 03Renovate が無視する項目の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ionfury/homelab --skill versions-renovate

インストール後、Claude Code で/versions-renovateを入力して読み込まれたか確認します。

同梱ファイルtests.yaml

詳細

バージョンと Renovate の管理

バージョンは kubernetes/platform/versions.env に記載されています。.github/renovate.json5 にある Renovate のカスタム正規表現マネージャーは、各エントリーの1行上にある # renovate: アノテーションを解析します。Flux は、リコンサイル時に ${var} 参照を HelmRelease 仕様へ置換します。

初期バージョンの選択

必ず配布元で最新の安定版タグを確認してください。記憶で推測してはいけません。 トレーニングデータは現実より数か月から数年遅れているため、記憶しているタグはほぼ確実に古くなっています。*_version= エントリーやハードコードされたイメージタグを記述する前に、必ず確認してください。

# Docker/OCI registry (GHCR shown; anonymous pull token)
TOKEN=$(curl -s "https://ghcr.io/token?scope=repository:<org>/<image>:pull&service=ghcr.io" | jq -r .token)
curl -s -H "Authorization: Bearer $TOKEN" "https://ghcr.io/v2/<org>/<image>/tags/list" | jq -r '.tags[]' | sort -V | tail

skopeo list-tags docker://ghcr.io/<org>/<image>          # if skopeo available
git ls-remote --tags --refs https://github.com/<org>/<repo>.git | sort -V | tail   # github-releases/tags

レジストリで実際に使用されているタグ形式に合わせてください(v2.7.1 と 2.7.1 など)。最も新しい安定版のセマンティックバージョニングを選び、ユーザーから指定がない限り beta/rc/nightly/latest は除外します。以降は Renovate が最新の状態に保ちますが、新規デプロイは古いリリースではなく、現在のリリースから開始する必要があります。

アノテーションの構文

# renovate: datasource=<source> depName=<name> [packageName=<pkg>] [extractVersion=<regex>] [registryUrl=<url>] [versioning=<scheme>]
variable_name=<value>

キーの順序は固定です:datasource、depName、packageName、extractVersion、registryUrl、versioning。キーの順序を変更すると、Renovate はそのエントリーを警告なしでスキップします。

フィールド必須用途
datasourceはいRenovate が参照する場所(helm、docker、github-releases、github-tags)
depNameはいRenovate の PR に表示される、人が読める名前
packageNameいいえレジストリ固有の検索パス(OCI レジストリ、GitHub リポジトリ)
extractVersionいいえ上流のバージョンを変換する正規表現(例:v プレフィックスを除去)
registryUrlいいえHTTP Helm リポジトリの URL(OCI には使用しません)
versioningいいえセマンティックバージョニング以外のバージョン方式の上書き(例:loose)

データソースの選択

HTTP Helm registry    --> datasource=helm + registryUrl=<url>
OCI Helm registry     --> datasource=docker + packageName=<full-path>   (no oci:// prefix)
GitHub release        --> datasource=github-releases + packageName=<org/repo>
GitHub tag            --> datasource=github-tags + packageName=<org/repo>

例

# HTTP Helm registry
# renovate: datasource=helm depName=grafana registryUrl=https://grafana.github.io/helm-charts
grafana_version=10.5.15

# OCI Helm registry
# renovate: datasource=docker depName=app-template packageName=ghcr.io/bjw-s-labs/helm/app-template
app_template_version=4.6.2

# GitHub releases (keep v prefix)
# renovate: datasource=github-releases depName=talos packageName=siderolabs/talos
talos_version=v1.12.2

# GitHub tags (strip v prefix with extractVersion)
# renovate: datasource=github-tags depName=kubernetes packageName=kubernetes/kubernetes extractVersion=^v(?<version>.*)$
kubernetes_version=1.35.0

# Strip v from Helm chart releases
# renovate: datasource=helm depName=cert-manager extractVersion=^v(?<version>.*)$ registryUrl=https://charts.jetstack.io
cert_manager_version=1.19.3

# Non-semver versions
# renovate: datasource=docker depName=cloudnative-vectorchord packageName=ghcr.io/tensorchord/cloudnative-vectorchord versioning=loose
vectorchord_version=18.1-1.0.0

YAML コンテナーイメージのアノテーション

Helm の値ファイルにハードコードされたイメージタグ(サイドカー、初期化コンテナー)の場合:

image:
  repository: ghcr.io/kashalls/kromgo
  # renovate: datasource=docker depName=ghcr.io/kashalls/kromgo
  tag: v0.7.5
initContainers:
  # renovate: datasource=docker depName=ghcr.io/home-operations/postgres-init
  image: ghcr.io/home-operations/postgres-init:18

パッケージルール

関連するチャートをグループ化したり、自動マージを無効にしたりするには、.github/renovate.json5 に追加してください。

{
  "matchDepNames": ["my-chart", "related-chart"],
  "groupName": "my stack"
}

matchDepNames の値は、アノテーション内の depName と一致する必要があります。デフォルトでは、マイナー/パッチ更新は3日後に自動マージされます(.renovate/automerge.json5)。インフラストラクチャ上重要なグループ(talos、kubernetes、cilium、gateway-api、flux)は自動マージが無効になっています。

変更後は、task renovate:validate を実行してください。

デバッグ

症状原因修正
警告なしで無視されるキーの順序が誤っている上記の正確な順序に従ってください
パッケージが見つからないpackageName に oci:// プレフィックスがあるoci:// プレフィックスを削除してください
バージョンに不要な v が付くextractVersion がないextractVersion=^v(?<version>.*)$ を追加してください
OCI チャートが見つからないOCI に datasource=helm を使用しているdatasource=docker を使用してください
セマンティックバージョニング以外がスキップされるversioning=loose がないversioning=loose を追加してください
正規表現が一致しないアノテーションが直前の行にないkey=value の直前に配置する必要があります

また、Renovate の GitHub イシューにある依存関係ダッシュボードと、renovate.json5 の ignorePaths も確認してください。

コメント