chore: sync node/pnpm versions across mise, package.json, and workflows#2223
chore: sync node/pnpm versions across mise, package.json, and workflows#2223s-hirano-ist merged 3 commits intomainfrom
Conversation
- Workflows now read node version from .mise.toml via node-version-file - Add engines.node to package.json so Vercel tracks the same source - Group node/pnpm updates from mise + npm managers into one Renovate PR Eliminates version drift between .mise.toml (24.15.0) and workflows (previously hardcoded 24.14.1). Future Renovate bumps will update .mise.toml, package.json engines.node, and packageManager in a single PR.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning actionlint の新しいバージョンがリリースされています。更新してください。
|
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 40 minutes and 28 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (12)
WalkthroughNode.js のバージョン管理を硬直的な指定から、リポジトリの Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying s-private with
|
| Latest commit: |
8c40f66
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7f6b01bb.s-private.pages.dev |
| Branch Preview URL: | https://claude-sync-version-updates.s-private.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (5)
.github/workflows/mutation-test.yaml (1)
29-34:⚠️ Potential issue | 🔴 CriticalMutation test workflow でも
.mise.tomlの直接指定は避けてください。
node-version-file: ".mise.toml"はsetup-node側で TOML として解釈されないため、Node セットアップが失敗し得ます。node-versionへ抽出済みの24.15.0を渡す方式に変更してください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/mutation-test.yaml around lines 29 - 34, In the "Install Node.js" GitHub Actions step using actions/setup-node@..., remove the unsupported node-version-file: ".mise.toml" entry and instead set node-version: "24.15.0" (hard-coded extracted value) so the action receives a concrete Node version; update the step that contains node-version-file to use node-version and delete the node-version-file line..github/workflows/update-reports.yaml (1)
21-24:⚠️ Potential issue | 🔴 Critical
.mise.tomlの直接指定はこの workflow でも危険です。
node-version-fileは.mise.tomlのnode = "..."を TOML として読まないため、月次レポート更新が Node セットアップで失敗し得ます。.mise.tomlから値だけを抽出してnode-versionに渡す形へ揃えてください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/update-reports.yaml around lines 21 - 24, `.mise.toml` を直接 `node-version-file` に渡しているため TOML の `node = "..."` を正しく解釈できず失敗する可能性があります。GitHub Actions の `uses: actions/setup-node@...` 呼び出しを修正し、`.mise.toml` から `node = "..."` の値だけを抽出して `node-version` に渡すように変更してください(例: `run` ステップで `grep`/`sed`/`python` 等を使って `.mise.toml` からバージョン文字列を取得し、その出力を `setup-node` の `node-version` 入力に渡す)。対象となる識別子: actions/setup-node, node-version-file, node-version, .mise.toml..github/workflows/license-check.yaml (1)
25-30:⚠️ Potential issue | 🔴 CriticalLicense check も Node セットアップで失敗する可能性があります。
.mise.tomlはactions/setup-node@v6のnode-version-fileが期待する plain version /.tool-versions/package.json形式ではないため、node = "24.15.0"をそのまま渡さない形にしてください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/license-check.yaml around lines 25 - 30, The setup step uses actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with node-version-file: ".mise.toml", but setup-node expects a plain version or supported file formats; replace this by extracting the node version from .mise.toml and passing it via the node-version input (or point node-version-file to a supported file). Concretely: add a preceding step that reads/parses the node = "24.15.0" value from .mise.toml (e.g., grep/sed or a short script) and saves it as an output or env var, then change the Install Node.js step to use node-version: ${{ steps.<extract-step>.outputs.node_version }} (or node-version: "${{ env.NODE_VERSION }}"), leaving cache and cache-dependency-path as-is; do not pass the raw .mise.toml file to node-version-file..github/workflows/memlab.yaml (1)
25-30:⚠️ Potential issue | 🔴 CriticalMemlab workflow も Node バージョン解決で止まる可能性があります。
actions/setup-node@v6のnode-version-fileは.mise.tomlを TOML として parse しないため、この指定ではnode = "24.15.0"が有効な semver として扱われません。.mise.tomlから値を抽出してnode-versionに渡す修正を適用してください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/memlab.yaml around lines 25 - 30, The workflow step named "Install Node.js" currently uses the node-version-file input which does not parse .mise.toml; replace that by extracting the node value from .mise.toml into an environment variable and pass that to the setup action via node-version. Add a prior run step that greps/parses the node field (e.g. grep -Po 'node\s*=\s*"(.*?)"' or similar) and writes the extracted version to $GITHUB_ENV as NODE_VERSION, then update the "Install Node.js" step (the uses: actions/setup-node@...) to remove node-version-file and use node-version: ${{ env.NODE_VERSION }} so the actual "node = \"24.15.0\"" value from .mise.toml is passed correctly..github/workflows/prisma-deploy.yaml (1)
28-33:⚠️ Potential issue | 🔴 Criticalここも
.mise.tomlをnode-version-fileに直接渡すと失敗し得ます。
actions/setup-node@v6は.mise.tomlの TOML 構文を Node バージョンファイルとして解釈しないため、Prisma deploy が Node セットアップ時点で止まるリスクがあります。jscpd.yamlと同様に、事前ステップで.mise.tomlから24.15.0だけを抽出してnode-versionに渡してください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/prisma-deploy.yaml around lines 28 - 33, 現在の workflow は actions/setup-node の node-version-file に .mise.toml を渡しており失敗する可能性があります; 事前に .mise.toml から Node バージョン文字列(例: "24.15.0")だけを抽出するステップを追加して、その抽出結果を actions/setup-node の node-version に渡すよう修正してください (参照フィールド: node-version-file → node-version, アクション: actions/setup-node@v6); 具体的には新しい step を追加して .mise.toml をパース/grep してバージョン値を出力し、outputs または env 経由で後続の setup step に渡すようにしてください。
🧹 Nitpick comments (1)
.github/workflows/ci.yaml (1)
1-4: 既存 FIXME: Node バージョン指定の一元化について。ファイル先頭の
# FIXME: refactor for multiple declaration and cacheにあるとおり、本 PR でも各ジョブ(build/biome/eslint/knip/test/storybook/docs)でsetup-nodeのブロックが 7 箇所重複しています。本 PR の目的(バージョンドリフト解消)とも親和性が高いので、将来的には composite action か reusable workflow に切り出し、node-version-file: ".mise.toml"と pnpm セットアップ・キャッシュ設定を 1 箇所に集約することを検討してください。今回の変更自体は問題ありません。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/ci.yaml around lines 1 - 4, 複数ジョブで重複している setup-node ブロックを集約してください: 現状 build / biome / eslint / knip / test / storybook / docs の各ジョブに同一の setup-node ステップが7箇所あるので、将来的には reusable workflow か composite action に切り出して一元化し、setup-node に node-version-file: ".mise.toml" を渡す形に統一し(pnpm セットアップとキャッシュ設定もその共通化されたステップに含める)、各ジョブからはその共通ワークフロー/アクションを呼び出すだけにしてください。
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/jscpd.yaml:
- Around line 23-28: The workflow currently passes .mise.toml into
actions/setup-node via node-version-file which the action's parser can't read;
replace that by adding a step (e.g., id: extract-node-version) that reads
.mise.toml and extracts the version with a simple shell regex (example: grep -Po
'node\s*=\s*"\K[^"]+' .mise.toml) and writes it to $GITHUB_OUTPUT as
node_version, then update the actions/setup-node step (the "Install Node.js"
step using actions/setup-node@53b8394) to remove node-version-file and instead
use with: node-version: ${{ steps.extract-node-version.outputs.node_version }}
(keep cache and cache-dependency-path as-is).
In @.github/workflows/release-please.yaml:
- Around line 50-53: The workflow step using
actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f currently sets
node-version-file: ".mise.toml", but setup-node v6 does not support .mise.toml;
update that step to point node-version-file to a supported file (e.g., ".nvmrc"
or ".node-version") or switch the step to use an alternative action such as
jdx/mise-action to read .mise.toml, ensuring you change the node-version-file
value or replace the action invocation accordingly.
---
Duplicate comments:
In @.github/workflows/license-check.yaml:
- Around line 25-30: The setup step uses
actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with
node-version-file: ".mise.toml", but setup-node expects a plain version or
supported file formats; replace this by extracting the node version from
.mise.toml and passing it via the node-version input (or point node-version-file
to a supported file). Concretely: add a preceding step that reads/parses the
node = "24.15.0" value from .mise.toml (e.g., grep/sed or a short script) and
saves it as an output or env var, then change the Install Node.js step to use
node-version: ${{ steps.<extract-step>.outputs.node_version }} (or node-version:
"${{ env.NODE_VERSION }}"), leaving cache and cache-dependency-path as-is; do
not pass the raw .mise.toml file to node-version-file.
In @.github/workflows/memlab.yaml:
- Around line 25-30: The workflow step named "Install Node.js" currently uses
the node-version-file input which does not parse .mise.toml; replace that by
extracting the node value from .mise.toml into an environment variable and pass
that to the setup action via node-version. Add a prior run step that
greps/parses the node field (e.g. grep -Po 'node\s*=\s*"(.*?)"' or similar) and
writes the extracted version to $GITHUB_ENV as NODE_VERSION, then update the
"Install Node.js" step (the uses: actions/setup-node@...) to remove
node-version-file and use node-version: ${{ env.NODE_VERSION }} so the actual
"node = \"24.15.0\"" value from .mise.toml is passed correctly.
In @.github/workflows/mutation-test.yaml:
- Around line 29-34: In the "Install Node.js" GitHub Actions step using
actions/setup-node@..., remove the unsupported node-version-file: ".mise.toml"
entry and instead set node-version: "24.15.0" (hard-coded extracted value) so
the action receives a concrete Node version; update the step that contains
node-version-file to use node-version and delete the node-version-file line.
In @.github/workflows/prisma-deploy.yaml:
- Around line 28-33: 現在の workflow は actions/setup-node の node-version-file に
.mise.toml を渡しており失敗する可能性があります; 事前に .mise.toml から Node バージョン文字列(例:
"24.15.0")だけを抽出するステップを追加して、その抽出結果を actions/setup-node の node-version
に渡すよう修正してください (参照フィールド: node-version-file → node-version, アクション:
actions/setup-node@v6); 具体的には新しい step を追加して .mise.toml をパース/grep
してバージョン値を出力し、outputs または env 経由で後続の setup step に渡すようにしてください。
In @.github/workflows/update-reports.yaml:
- Around line 21-24: `.mise.toml` を直接 `node-version-file` に渡しているため TOML の `node
= "..."` を正しく解釈できず失敗する可能性があります。GitHub Actions の `uses: actions/setup-node@...`
呼び出しを修正し、`.mise.toml` から `node = "..."` の値だけを抽出して `node-version`
に渡すように変更してください(例: `run` ステップで `grep`/`sed`/`python` 等を使って `.mise.toml`
からバージョン文字列を取得し、その出力を `setup-node` の `node-version` 入力に渡す)。対象となる識別子:
actions/setup-node, node-version-file, node-version, .mise.toml.
---
Nitpick comments:
In @.github/workflows/ci.yaml:
- Around line 1-4: 複数ジョブで重複している setup-node ブロックを集約してください: 現状 build / biome /
eslint / knip / test / storybook / docs の各ジョブに同一の setup-node ステップが7箇所あるので、将来的には
reusable workflow か composite action に切り出して一元化し、setup-node に node-version-file:
".mise.toml" を渡す形に統一し(pnpm
セットアップとキャッシュ設定もその共通化されたステップに含める)、各ジョブからはその共通ワークフロー/アクションを呼び出すだけにしてください。
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 2e16b735-1154-4d94-b529-8681c609fd87
📒 Files selected for processing (11)
.github/renovate.json5.github/workflows/ci.yaml.github/workflows/docs.yaml.github/workflows/jscpd.yaml.github/workflows/license-check.yaml.github/workflows/memlab.yaml.github/workflows/mutation-test.yaml.github/workflows/prisma-deploy.yaml.github/workflows/release-please.yaml.github/workflows/update-reports.yamlpackage.json
| - name: Install Node.js | ||
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | ||
| with: | ||
| node-version: "24.14.1" | ||
| node-version-file: ".mise.toml" | ||
| cache: pnpm | ||
| cache-dependency-path: pnpm-lock.yaml |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== .mise.toml =="
sed -n '1,40p' .mise.toml
echo "== actions/setup-node README: node-version-file examples =="
curl -fsSL https://raw.githubusercontent.com/actions/setup-node/v6/README.md \
| sed -n '/node-version-file/,+4p'
echo "== actions/setup-node parser implementation =="
curl -fsSL https://raw.githubusercontent.com/actions/setup-node/v6/src/util.ts \
| tr ';' '\n' \
| sed -n '/getNodeVersionFromFile/,/printEnvDetailsAndSetOutput/p'Repository: s-hirano-ist/s-private
Length of output: 3262
.mise.toml は setup-node の node-version-file として直接読めません。
actions/setup-node@v6 の parser は .mise.toml の node = "24.15.0" 形式に対応していません。パーサーの実装では:
- JSON として解析を試みる(失敗)
- 正規表現
/^(?:node(js)?\s+)?v?(?<version>[^\s]+)$/mでテキスト解析を試みる
この正規表現は node 24.15.0 のような形式を期待していますが、.mise.toml の node = "24.15.0" はマッチしません(= と引用符の存在)。その結果、パーサーはファイル全体を版文字列として返し、workflow は失敗します。
修正案: `.mise.toml` から Node バージョンを抽出して渡す
+ - name: Read Node.js version from .mise.toml
+ id: node-version
+ shell: bash
+ run: |
+ node_version="$(grep '^node = ' .mise.toml | cut -d'"' -f2)"
+ test -n "$node_version"
+ echo "version=$node_version" >> "$GITHUB_OUTPUT"
+
- name: Install Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
- node-version-file: ".mise.toml"
+ node-version: ${{ steps.node-version.outputs.version }}
cache: pnpm
cache-dependency-path: pnpm-lock.yaml📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Install Node.js | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| node-version: "24.14.1" | |
| node-version-file: ".mise.toml" | |
| cache: pnpm | |
| cache-dependency-path: pnpm-lock.yaml | |
| - name: Read Node.js version from .mise.toml | |
| id: node-version | |
| shell: bash | |
| run: | | |
| node_version="$(grep '^node = ' .mise.toml | cut -d'"' -f2)" | |
| test -n "$node_version" | |
| echo "version=$node_version" >> "$GITHUB_OUTPUT" | |
| - name: Install Node.js | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| node-version: ${{ steps.node-version.outputs.version }} | |
| cache: pnpm | |
| cache-dependency-path: pnpm-lock.yaml |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/jscpd.yaml around lines 23 - 28, The workflow currently
passes .mise.toml into actions/setup-node via node-version-file which the
action's parser can't read; replace that by adding a step (e.g., id:
extract-node-version) that reads .mise.toml and extracts the version with a
simple shell regex (example: grep -Po 'node\s*=\s*"\K[^"]+' .mise.toml) and
writes it to $GITHUB_OUTPUT as node_version, then update the actions/setup-node
step (the "Install Node.js" step using actions/setup-node@53b8394) to remove
node-version-file and instead use with: node-version: ${{
steps.extract-node-version.outputs.node_version }} (keep cache and
cache-dependency-path as-is).
setup-node cannot parse .mise.toml (TOML format); it was misreading [env] as the node version. Move node/pnpm to .tool-versions (asdf format), which setup-node reads natively and mise also reads by default. Keep doppler/agent-browser/env in .mise.toml. Enable the asdf manager in Renovate and include it in the node-and-pnpm grouping so updates still land in a single PR.
|
Warning actionlint の新しいバージョンがリリースされています。更新してください。
|
✅ Code Duplication ReportSummary
✅ Code duplication rate is within the acceptable threshold. 📊 Detailed ReportConsole OutputDuplicate Code BlocksDuplicate 1
Duplicate 2
Duplicate 3
Duplicate 4
Duplicate 5
Duplicate 6
Duplicate 7
Duplicate 8
Duplicate 9
Duplicate 10
... and 39 more duplicate blocks. Run 📦 Full Report: Download the complete jscpd report from GitHub Actions Artifacts |
Coverage Report
File CoverageNo changed files found. |
Cloudflare Workers Builds detects .tool-versions and tries to install via asdf, but the node/pnpm asdf plugins are not preinstalled in the build image, causing the build to fail immediately. Switch to .nvmrc for the node version, which Cloudflare Workers Builds and actions/setup-node both read natively. Move pnpm back into .mise.toml [tools] (Cloudflare reads pnpm via corepack from package.json's packageManager field, so no .nvmrc-equivalent is needed for it). Enable mise's idiomatic_version_file_enable_tools = ["node"] so mise keeps reading .nvmrc for local dev. Update Renovate to use the nvm manager instead of asdf in the node-and-pnpm grouping.
|
Warning actionlint の新しいバージョンがリリースされています。更新してください。
|
Eliminates version drift between .mise.toml (24.15.0) and workflows
(previously hardcoded 24.14.1). Future Renovate bumps will update
.mise.toml, package.json engines.node, and packageManager in a single PR.
Summary by CodeRabbit
リリースノート
Chores