postgres-clientフィーチャーのデフォルトバージョンを15から17へ引き上げ
Devcontainerのpostgres-clientフィーチャーが、デフォルトでインストールするPostgreSQLクライアントのバージョンを15から17に変更しました。Trixie(Debian 13)ベースイメージとの整合性を取るための更新です。
背景
DevcontainerのベースイメージとしてTrixie(mcr.microsoft.com/devcontainers/base:2-trixie)が採用されており、Trixieの公式パッケージリポジトリではpostgresql-client-17が提供されています。このため、デフォルトのクライアントバージョンもTrixieで標準的に利用できるバージョンへ合わせることが自然な選択とされました。
従来のデフォルトはPostgreSQL 15であり、フィーチャーのversionオプションを明示しない場合はクライアント15がインストールされていました。ベースイメージの変遷に伴い、デフォルト値が実態と乖離しつつあったことが今回の変更の動機です。
技術的な変更
デフォルト値の変更は、フィーチャー定義・インストールスクリプト・テストの3箇所に渡って一貫して適用されています。
devcontainer-feature.jsonのオプション定義:
// 変更前
"default": "15"
// 変更後
"default": "17"
install.shのフォールバック値:
# 変更前
export POSTGRES_CLIENT_VERSION="${VERSION:-"15"}"
# 変更後
export POSTGRES_CLIENT_VERSION="${VERSION:-"17"}"
テストシナリオも合わせて更新されています。scenarios.jsonではversion_14シナリオがversion_16に、version_16シナリオがversion_18にリネームされ、テスト対象バージョンが全体的に2つずつ引き上げられました。デフォルト動作を検証するtest.shもバージョン17の確認に変更されています。
フィーチャー自体のバージョンは1.1.3から1.2.0へマイナーバージョンが上がっています。PR内ではメジャーバージョンアップの妥当性についても言及されていますが、後方互換性を維持しつつデフォルト値のみを変更するという変更内容から、マイナーバージョンの採用が選択されています。
設計判断
versionオプションの存在により、既存ユーザーへの影響は限定的に設計されています。明示的にversion: "15"を指定しているDevcontainer設定はそのまま動作し続けるため、デフォルト値の変更はオプション未指定のケースにのみ影響します。
テストシナリオの世代更新(14→16、16→18)はデフォルト変更とは独立した調整であり、テストカバレッジをより新しいバージョン帯に維持することを目的としています。これにより、現行リリースに近いバージョン範囲での動作検証が継続されます。
まとめ
Trixieベースイメージに合わせたデフォルトバージョンの更新により、postgres-clientフィーチャーをオプション未指定で使用するユーザーが自動的に最新のTrixie標準クライアントを得られるようになりました。versionオプションによる明示的な指定は引き続き有効であるため、既存の設定ファイルに破壊的な変更はありません。