⚡
GitHub ActionsでVoltaの設定を簡単に反映する
VoltaでNode.jsのバージョンを管理しているプロジェクトで、CI環境でも同じバージョンを使用するための設定方法を紹介します。
Volta公式の volta-cli/action
を使用することで、簡単かつ確実にバージョンを揃えることができます。
なお、本記事ではVoltaについては詳しく触れませんので、公式ドキュメントやVoltaのセットアップ方法の記事を参考にしてください。
現状のプロジェクト設定
Voltaの設定は package.json
で管理されています。
{
"volta": {
"node": "23.2.0",
"yarn": "1.22.22"
}
}
Volta Actionを使う理由
Voltaはチーム全体で一貫したNode.jsの環境を維持するためのツールですが、CI環境でも同じバージョンを使用したい場合、GitHubが提供する setup-node
アクションでは制限がありました。
もし仮に、以下のようにsetup-node
アクションを使用し、node-version-file
プロパティで package.json
を指定した場合、Voltaの設定が反映されるのはNodeのバージョンのみになるので注意が必要です。
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: package.json
そのため、Volta公式が提供する volta-cli/action
を使用することで、package.json
の volta
フィールドから自動的にバージョンを検出し、Node.jsとパッケージマネージャーの両方のバージョンを簡単に揃えることができます。
GitHub Actions設定例
name: Build
on:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# setup-nodeの代わりにvolta-cli/action@v4を使用する
- name: Setup Volta
uses: volta-cli/action@v4
# デバッグ用のバージョンチェックステップ
- name: Version Check
run: |
echo "Node.js version:"
node --version
echo "Yarn version:"
yarn --version
- name: Cache dependencies
id: cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-node_modules-
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Build
run: yarn build
- name: Test
run: yarn test
設定のポイント
Voltaのセットアップ
-
volta-cli/action@v4
を使用して、package.json
のvoltaの設定を自動的に適用 - 追加の設定なしでNode.jsとYarnのバージョンを管理可能
バージョン確認
- Version Check ステップでNode.jsとYarnのバージョンを出力。こちらのステップはデバッグ用ですので、確認後は削除しても問題ありません。
まとめ
Volta公式の volta-cli/action を使用することで、以下のメリットが得られるため、Voltaを使用しているプロジェクトでは、ぜひ試してみてください!
-
package.json
の設定だけでCI環境のNodeやYarnのバージョンを管理できる -
setup-node
を使う場合と比較して、NpmやYarnのバージョンも自動的に設定できる
Discussion