versions-renovate について
Kubernetes プラットフォームのリポジトリで依存関係のバージョンを管理するコーディングスキルです。Renovate の注釈やデータソースの選択、更新の検証とトラブルシューティングを説明します。
主な機能
- 01Renovate 注釈の構文
- 02データソース選択の指針
- 03バージョンタグの確認
- 04依存関係のグループ化
- 05検証とトラブルシューティング
活用シーン
- 01Helm chart バージョンの追加
- 02コンテナイメージタグの追跡
- 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 も確認してください。