Skip to content

依存の定期更新(Dependabot/Renovate)とメジャー移動タグ対応 - #3

Merged
mackato merged 2 commits into
mainfrom
feat/dep-updates-and-major-tag
Jun 3, 2026
Merged

依存の定期更新(Dependabot/Renovate)とメジャー移動タグ対応#3
mackato merged 2 commits into
mainfrom
feat/dep-updates-and-major-tag

Conversation

@mackato

@mackatomackato commented Jun 3, 2026

Copy link
Copy Markdown
Member

Closes#2

ユーザー指示の要点

  • Issue 依存の定期更新(Renovate)とメジャー移動タグ対応 #2 の対応プランを作成し、作業ブランチで実行。
  • Issue 前提「github-actions は Dependabot が cooldown 非対応」の真偽を確認 → 誤りと判明(Dependabot は github-actions / nix とも cooldown 対応、ともに GA 済み)。
  • 構成は「Dependabot に寄せ、devbox だけ Renovate」。
  • Renovate は devbox バイナリが要るため hosted App ではなく self-hosted(GitHub Actions) で運用する。

変更の概要

論理単位で 2 コミットに分割。

  1. 依存の定期更新(Dependabot/Renovate)
    • .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 を自動起動。
  2. メジャー移動タグ
    • .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 可能。

必要な運用手順(マージ前後の手動作業・コード外)

  1. org に GitHub App(例 airs-renovate)を作成 — 権限: Contents R/W・Issues R/W・Pull requests R/W・Metadata R。
  2. private key を発行し、Secrets に RENOVATE_APP_ID / RENOVATE_APP_PRIVATE_KEY を登録。
  3. App を org(または devtools)に install。
  4. Dependabot は App 不要。マージで version updates が自動有効化(security updates のみ org/repo Settings 側)。

検証方法

  • 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。
  • Renovate self-hosted: App トークン登録後に workflow_dispatch で手動実行し、ログと devbox 更新 PR を確認。

🤖 Generated with Claude Code

@mackato
mackatoforce-pushed the feat/dep-updates-and-major-tag branch 2 times, most recently from fa7a0d5 to cf4aa37CompareJune 3, 2026 06:47
@mackato
mackato requested a review from CopilotJune 3, 2026 06:57

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
FileDescription
renovate.jsonRenovate を devbox 管理に限定し、cooldown/lockfile maintenance を有効化
README.md移動タグ vX と不変タグ vX.Y.Z の使い分けを説明として追加
.github/workflows/renovate.ymlGitHub Actions 上で Renovate を実行して devbox 更新 PR を作るワークフローを追加
.github/workflows/release.ymlvX.Y.Z タグ push を契機に Release 作成 + vX の移動タグ更新を追加
.github/dependabot.ymlgithub-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]+"

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘ありがとうございます。確認しましたが、この 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)

Comment thread.github/workflows/renovate.yml Outdated
- name: Install devbox
uses: jetify-com/devbox-install-action@8c6a66ed6273138b1915457069de78cb52fe3bd7 # v0.15.0
- name: Run Renovate
run: npx --yes renovate

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

妥当なご指摘です。renovate@43 にメジャー固定しました(9cf2ceb)。

patch / minor は取り込みつつ、メジャー(44.x 以降)の破壊的変更で突然落ちる・意図しない大量 PR が出るリスクを抑えます。メジャー更新は意図的に手動で上げる方針とし、その旨をワークフローにコメントで残しました。

@mackato
mackatoforce-pushed the feat/dep-updates-and-major-tag branch from cf4aa37 to 28747d8CompareJune 3, 2026 07:04
mackatoand others added 2 commits June 3, 2026 16:09
github-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>
@mackato
mackatoforce-pushed the feat/dep-updates-and-major-tag branch from 28747d8 to 9cf2cebCompareJune 3, 2026 07:09
@mackato
mackato requested a review from CopilotJune 3, 2026 07:10

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Comment on lines +20 to +22
- package-ecosystem: nix
directory: "/"
schedule:

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘ありがとうございます。確認しましたが、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

Copy link
Copy Markdown
MemberAuthor

LGTM 👍

  • CI(check.yml: shellcheck・bats・statix・deadnix・nixfmt)green
  • Copilot 指摘 3 件対応済み:
    • release.yml の glob +(誤指摘)→ 公式仕様を根拠に現状維持
    • renovate.yml の npx renovate 最新取得(妥当)→ renovate@43 にメジャー固定
    • dependabot.yml の nix 非対応(誤指摘)→ 2026-04-07 GA を根拠に現状維持
  • Renovate App 作成・Secret 登録・org install 確認済み

squash でマージします。

@mackato
mackato merged commit c08dc7b into mainJun 3, 2026
2 checks passed
@mackato
mackato deleted the feat/dep-updates-and-major-tag branch June 3, 2026 07:23
mackato added a commit that referenced this pull request Jun 3, 2026
#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>
mackato added a commit that referenced this pull request Jun 3, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

依存の定期更新(Renovate)とメジャー移動タグ対応

2 participants

@mackato