Skip to content

#236 を実装する(スプリント m8c) - #479

Merged
takemi-ohama merged 2 commits into
sprint/m8cfrom
feat/issue-236-m8c
Oct 12, 2026
Merged

takemi-ohama merged 2 commits into
sprint/m8cfrom
feat/issue-236-m8c

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

general・php・php85 の派生イメージに言語サーバを専用の置き場で入れるようにしました(#236)。あわせて CHANGELOG に記載し、Dockerfile の記述を確かめるテストを足しています。

利用者向けの変化

  • general・php・php85 の派生イメージに言語サーバが入り、専用の置き場から使える

移行の手順

  • 無し

変更の要点

  • containers/general/Dockerfile・containers/php/Dockerfile・containers/php85/Dockerfile に言語サーバを専用の置き場へ入れる手順を足した
  • CHANGELOG.md に派生イメージの言語サーバを記載した
  • 3 つの Dockerfile の記述を確かめる test_language_servers_dockerfile.py を新しく加えた
  • 5 ファイル・188 行の追加(削除は無し)

テスト

  • test-limited: exit 0。範囲テスト 1 本(132.9 秒、戦略 local-full)が通過
  • design-tests: exit 0。設計文書 issues/issue-236-design.md に名前の出るテスト 1 件がすべて HEAD にある
  • design-specs: exit 0。変えたパス 5・シンボル 13 を含む既存の確定仕様と変更履歴 2 件を照合

設計と違う点

  • 無し

#236 派生イメージの言語サーバ

設計(issues/issue-236-design.md)のとおり、general・php・php85 の Dockerfile に、npm install --prefix /opt/language-servers で pyright@1.1.414・typescript-language-server@6.0.2・typescript@5.9.3・intelephense@1.18.5 を root で入れる RUN を足した。bin に 3 つのコマンドの symlink を置き、ENV PATH の先頭に足している。Serena の uv のキャッシュは温めない(設計の決定 4 の (b))。containers/base/ とほかの派生イメージは変えていない。

設計と違えたところ:

  • RUN の最後に /opt/language-servers/bin/typescript-language-server --version を足した。建てるときに symlink と依存の解決が壊れていれば、そこでビルドが止まる
  • 用語集(docs/glossary/glossary.json・docs/glossary.md)は設計の PR で反映済みだった。glossary.py render --check と check --diff main が通ったため、この PR では変えていない

手で確かめたこと(arm64、Docker Desktop の containerd のイメージストア、既存の devbase-base:latest(2bf59f6453c6)の使い捨てのコンテナ。イメージは建てていない)

docker run --rm --user root --entrypoint bash で、general の Dockerfile から取り出した RUN を実行した後、ubuntu で確かめた:

受け入れ条件 結果
2 非対話の bash の command -v が /opt/language-servers/bin/ の下の 3 つのパスを返した
3 pyright-langserver --stdio・intelephense --stdio・typescript-language-server --stdio が、initialize に対して result.capabilities を持つ応答を返した(TypeScript は応答の前に Using Typescript version (bundled) 5.9.3 from path "/opt/language-servers/node_modules/typescript/lib/tsserver.js" と知らせた)
4 実体からたどって最初に見つかった node_modules/typescript/package.json は /opt/language-servers/node_modules/typescript で版は 5.9.3。lib/tsserver.js があった
7 tsc --version は Version 7.0.2。npm のグローバル領域の typescript は 7.0.2 のまま
— ubuntu から /opt/language-servers は書けない。/root/.npm は残らない
12(見込み) du -sbx /opt/language-servers は 147,936,811 バイト(上限 350,000,000 以下)

静的な検査(tests/containers/test_language_servers_dockerfile.py、19 件)が、typescript@^5・typescript@7.0.2・1 つのイメージだけ違う pyright の版・intelephense の欠け・ENV PATH の欠け・-g・/root/.npm を消さない・tsc の symlink・USER ubuntu に戻さない・UV_CACHE_DIR を足す、のそれぞれで落ちることを確かめた。

全体の env -u DEVBASE_ROOT uv run --locked pytest tests/ -q は 4343 passed / 31 skipped。ruff(E9,F63,F7,F82)は通った。固有の語の検査は語の一覧がこの端末に無く飛ばされた。

マージ前の手動確認(建てて確かめる。conductor が行う)

  • 手元の devbase-base:latest の上に general・php・php85 を作業用のタグで建てる(php・php85 は composer:latest の取得がキーチェーンで止まり得る)
  • 3 つのイメージで受け入れ条件 2・3・4・7 を docker run --rm --entrypoint bash <イメージ> -c '...' で確かめる(設計の決定 6)
  • 3 つのイメージで受け入れ条件 5(ai-plugins の check。binary と typescript_major_5 の欠けが出ない)
  • 受け入れ条件 12: 3 つのイメージの展開後の大きさ(du -sbx /)を変更の前と後で測り、端末とイメージストアをここに書く
  • 2 つ目のタグで建てたときにビルドのキャッシュに当たるか(設計の「未確認のまま残ること」)
  • 作業用のタグを消す

残した事項

  • amd64 での受け入れ条件 2〜5 と、利用者のコンテナの中での公式 LSP プラグインの診断はリリース後テストで見る
  • 受け入れ条件 8〜10 は (b) を選んだため対象外。11 は検査(UV_CACHE_DIR・serena-agent が無いこと)と設計の決定 4 で満たす

モード: standard / 通した工程: 実装 → 完了判定 → Pull Request

🤖 Generated with Claude Code

takemi-ohama and others added 2 commits October 13, 2026 02:46
pyright・typescript-language-server・typescript 5・intelephense を root で
/opt/language-servers へ入れ、3 つのコマンドだけを PATH に出す。base の tsc と
npm のグローバル領域は変えない。版の固定と 3 つのイメージの一致を静的な検査で縛る。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama
takemi-ohama marked this pull request as ready for review October 12, 2026 17:55
@takemi-ohama
takemi-ohama merged commit 5f4339a into sprint/m8c Oct 12, 2026
10 checks passed
@takemi-ohama takemi-ohama mentioned this pull request Oct 12, 2026
2 tasks done
Sign up for free to 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.

1 participant