Uh oh!
There was an error while loading. Please reload this page.
依存の定期更新(Dependabot/Renovate)とメジャー移動タグ対応 - #3
Conversation
fa7a0d5 to
cf4aa37CompareThere was a problem hiding this comment.
Pull request overview
Dependabot と Renovate(devbox 専用)の定期更新運用を追加し、リリース時にメジャー移動タグ(vX)を自動更新できるようにして、利用側が「厳密 pin」と「メジャー追従」を選べるようにする PR です。
Changes:
- Dependabot(github-actions / nix)と Renovate(devbox)の責務分離による定期更新設定を追加
vX.Y.Zリリース作成後にvXを最新コミットへ force 更新するリリースフローを追加- README に
vX(移動タグ)とvX.Y.Z(不変タグ)の利用パターンを追記
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
renovate.json | Renovate を devbox 管理に限定し、cooldown/lockfile maintenance を有効化 |
README.md | 移動タグ vX と不変タグ vX.Y.Z の使い分けを説明として追加 |
.github/workflows/renovate.yml | GitHub Actions 上で Renovate を実行して devbox 更新 PR を作るワークフローを追加 |
.github/workflows/release.yml | vX.Y.Z タグ push を契機に Release 作成 + vX の移動タグ更新を追加 |
.github/dependabot.yml | github-actions / nix の定期更新(cooldown/weekly/JST)設定を追加 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| push: | ||
| tags: | ||
| - "v*" | ||
| - "v[0-9]+.[0-9]+.[0-9]+" |
There was a problem hiding this comment.
ご指摘ありがとうございます。確認しましたが、この glob は正しく v1.2.3 にマッチします。
GitHub Actions の filter pattern では + は「直前の文字(ここでは文字クラス [0-9])の 1 回以上」を表す特殊文字で、. はリテラルです。公式 cheat sheet にも v[12].[0-9]+.[0-9]+ が v1.10.1 / v2.0.0 にマッチする例が明記されています。
したがって v[0-9]+.[0-9]+.[0-9]+ は v1.2.3 にマッチし、ドットを含まない移動タグ v1 にはマッチしない(=二重発火しない)想定どおりの挙動です。現状維持とします。
参考: https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions (filter pattern cheat sheet)
| - name: Install devbox | ||
| uses: jetify-com/devbox-install-action@8c6a66ed6273138b1915457069de78cb52fe3bd7 # v0.15.0 | ||
| - name: Run Renovate | ||
| run: npx --yes renovate |
There was a problem hiding this comment.
妥当なご指摘です。renovate@43 にメジャー固定しました(9cf2ceb)。
patch / minor は取り込みつつ、メジャー(44.x 以降)の破壊的変更で突然落ちる・意図しない大量 PR が出るリスクを抑えます。メジャー更新は意図的に手動で上げる方針とし、その旨をワークフローにコメントで残しました。
cf4aa37 to
28747d8Comparegithub-actions と nix(flake.lock) を Dependabot、devbox を Renovate に分担し、 いずれも公開直後の汚染版を避けるため 3 日の cooldown を設ける。Dependabot は devbox 未対応のため devbox のみ Renovate を使い、両 bot の対象が重複しないよう Renovate は enabledManagers を devbox に限定する。 Renovate は devbox バイナリを実行プロセスに渡す必要があり hosted App では回せない ため self-hosted とする。runner に devbox を入れて Renovate を直接実行し binarySource=global で host の devbox を使う。実行は週次(月曜 9am JST)の cron で 制御し、専用 GitHub App トークンで PR を作成して CI を自動起動させる。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
不変タグ vX.Y.Z に加え同メジャーの移動タグ vX を最新へ force 更新し、利用側が 厳密 pin とメジャー追従を選べるようにする。Nix flake の ref はセムバー範囲を 取れないため、メジャー追従はサーバ側の移動タグで実現する。release のトリガは vX.Y.Z に限定し、vX 移動による二重発火を防ぐ。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
28747d8 to
9cf2cebCompare| - package-ecosystem: nix | ||
| directory: "/" | ||
| schedule: |
There was a problem hiding this comment.
ご指摘ありがとうございます。確認しましたが、package-ecosystem: nix は現在サポートされています。
Dependabot の Nix エコシステム対応は 2026-04-07 に GA となり、package-ecosystem: nix を指定すると flake.lock の入力(GitHub / GitLab / Sourcehut / 素の git)を監視し、上流に新しいコミットがあれば PR を作成します(version updates のみ。security updates は対象外)。公式の supported ecosystems 一覧にも YAML 値 nix が version updates 対応として掲載されています。
本リポジトリの方針として、devbox は Dependabot 未対応のため Renovate、それ以外(github-actions / nix=flake.lock)を Dependabot に分担しています。したがって現状維持とします。
参考:
mackato
commented
Jun 3, 2026
LGTM 👍
squash でマージします。 |
Uh oh!
There was an error while loading. Please reload this page.
#3 で追加した self-hosted Renovate の運用調整をまとめる。 - app token を client-id 指定に変更(actions/create-github-app-token の app-id 非推奨警告を解消)。 - devbox は version 更新を無効化し lockFileMaintenance のみで devbox.lock を 更新する(devbox.json は Major 制約を維持し、Major 上げは手動)。cooldown は lockFileMaintenance に効かないため minimumReleaseAge は除去。スケジュールは ワークフロー cron に一本化。 - Dependency Dashboard を無効化(lockFileMaintenance のみの構成では不要)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
github-actions / nix(flake.lock) を Dependabot で 3 日 cooldown 付きの定期更新、 devbox を self-hosted Renovate(GitHub Actions) で更新する。Renovate は runner に devbox を入れ binarySource=global で実行し、専用 GitHub App(client-id) のトークンで PR を作成する。devbox は devbox.json の Major 制約を維持し lockFileMaintenance で devbox.lock のみ更新する(Dependency Dashboard は無効)。 リリース時に不変タグ vX.Y.Z に加え同メジャーの移動タグ vX を最新へ追従させ、 利用側が厳密 pin とメジャー追従を選べるようにする。flake.lock 更新は SemVer を 上げて release するルールを README に明記。 Closes#2 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Closes#2
ユーザー指示の要点
変更の概要
論理単位で 2 コミットに分割。
.github/dependabot.yml(新規): github-actions + nix を cooldown 3 日・weekly(月曜 9am JST)で更新。github-actions はグループ化。renovate.json(新規):enabledManagers: ["devbox"]で devbox 専用。minimumReleaseAge: "3 days"、lockFileMaintenance有効。スケジュールはワークフロー cron 側で制御するため設定しない。.github/workflows/renovate.yml(新規): self-hosted Renovate。runner に devbox を入れ、binarySource=globalで host の devbox を使用。週次 cron(月曜 9am JST)+workflow_dispatch。専用 GitHub App トークンで PR を作成し CI を自動起動。.github/workflows/release.yml: トリガをv[0-9]+.[0-9]+.[0-9]+に限定 + Release 作成後にvXを最新コミットへ force 更新。README.md: 低摩擦(v1)/ 厳密 pin(v1.2.0)の両利用パターンを追記。なぜ Renovate は self-hosted か
devtools で Renovate が見るのは devbox のみ。devbox.json の version 更新と devbox.lock の整合更新には devbox バイナリが要る。Mend hosted には devbox が無く回せないため、CI/release で使う
jetify-com/devbox-install-actionを再利用して runner に devbox を入れ、Renovate を直接実行する。Docker で動くrenovatebot/github-actionでは host の devbox が見えないため使わない。レビューのポイント
renovate.yml: devbox を入れてからnpx renovateを直接実行しRENOVATE_BINARY_SOURCE=global。トークンは専用 GitHub App(create-github-app-token)で、Renovate PR に CI が自動で付く。renovate.json:enabledManagers: ["devbox"]で Dependabot 管轄(nix / github-actions)と重複しないこと。schedule は cron 側に一本化。dependabot.yml: nix への cooldown 適用、schedule(weekly / monday / 09:00 / Asia/Tokyo)。release.yml: 移動タグは lightweight、permissions: contents: write+ persist-credentials で push 可能。必要な運用手順(マージ前後の手動作業・コード外)
airs-renovate)を作成 — 権限: Contents R/W・Issues R/W・Pull requests R/W・Metadata R。RENOVATE_APP_ID/RENOVATE_APP_PRIVATE_KEYを登録。検証方法
renovate.json:npx --yes --package renovate@latest -- renovate-config-validator renovate.json→ valid。renovate.yml/dependabot.yml/release.yml: YAML 構文 valid。release.yml論理: フィルタv[0-9]+.[0-9]+.[0-9]+がv1にマッチしない(二重発火しない)。devbox run check(shellcheck・bats・statix・deadnix・nixfmt): all checks passed。workflow_dispatchで手動実行し、ログと devbox 更新 PR を確認。🤖 Generated with Claude Code