Node.js バージョンを v24 に更新
この PR は、Buildkite 用 CI の Docker イメージで使用する Node.js のバージョンを 22 系から 24 系へ更新し、ライブラリのバージョン要件を満たすための変更です。変更は Dockerfile の APT ソース URL のみの差し替えで、他の設定やパッケージには影響を与えません。
背景
Node.js ライブラリが >= 24 を要求し始めたことが直接の更新理由です。直前の PR #181 では一時的に v22 へバンプしましたが、同 PR のコメントでも「v22 は保守的なステップ」とは記載されておらず、実際には更なるバージョン上げが必要と判断されました。このため、CI 環境が継続的にビルドできるよう v24 へのバンプが行われました。
この変更により、CI の Node.js 環境が最新の依存要件と合致し、将来的なパッケージ更新の摩擦を減らすことが期待されます。
技術的な変更
Dockerfile の Node.js APT ソース行だけを変更し、node_22.x から node_24.x へ URL を置き換えました。その他の Ruby や PostgreSQL の設定はそのままで、インストール手順全体への影響はありません。
@@ -30,7 +30,7 @@ RUN set -ex && echo "--- :ruby: Updating RubyGems and Bundler" \
&& echo "deb [signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ ${codename}-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
# Node apt sources
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
- && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
+ && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
&& printf '%s\n' 'Package: nodejs' 'Pin: origin deb.nodesource.com' 'Pin-Priority: 1001' > /etc/apt/preferences.d/nodejs \
# Install all the things
&& apt-get update \
この差分は 1 行の追加と 1 行の削除のみで、Docker イメージの構築時間やレイヤー構造にほとんど影響しません。
設計判断
バージョン更新は Dockerfile の文字列置換 のみで実装され、変数化や抽象化レイヤーは導入していません。シンプルな置換により差分が最小化され、レビューやロールバックが容易になるという利点があります。また、Pin-Priority: 1001 の設定は維持されているため、Node.js パッケージの優先度に関する既存の挙動は変わりません。
この設計は、CI 環境の安定性を損なわずに外部依存のバージョン要件に追従するという目的に適合しています。
まとめ
Node.js を v24 に更新することで、ビルド時のライブラリ要件を満たしつつ、Dockerfile の変更は 1 行の置換に留まります。影響範囲が限定的であるため、今後のバージョンアップも同様の手順で安全に実施できる点が大きな利点です。