Skip to content

feat(env): devbase env init で HOST_SSH_USER / HOST_SSH_HOST を自動設定 (#48)#68

Merged
takemi-ohama merged 1 commit into
mainfrom
feature/PLAN48-host-ssh-user
Jun 13, 2026
Merged

feat(env): devbase env init で HOST_SSH_USER / HOST_SSH_HOST を自動設定 (#48)#68
takemi-ohama merged 1 commit into
mainfrom
feature/PLAN48-host-ssh-user

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

概要

devbase env init の対話セットアップに ホスト接続情報 (SSH) コレクタを追加し、ホスト (mac/Linux/WSL) のログインユーザー名を HOST_SSH_USER として、SSH 先ホスト名を HOST_SSH_HOST として .env に自動設定する。

コンテナからホストへ SSH してホスト側 GUI アプリ(例: Chrome をリモートデバッグモードで起動)を起動するワークフローを、HOST_SSH_USER=<名> の手動指定なしで利用できるようにするのが目的。devbase env init はホスト上で実行される CLI のため、getpass.getuser() でホストのユーザー名を確実に取得できる。

関連 Issue

変更点

  • lib/devbase/env/keys.py: HOST_SSH_USER / HOST_SSH_HOST キー定数を追加
  • lib/devbase/env/collectors/host.py(新規): host コレクタ。getpass.getuser() を既定値として提示し safe_input で上書き可能。HOST_SSH_HOST は既定 host.docker.internal(WSL2/Windows 向けに上書き余地)。既存コレクタと同じ COLLECTOR 定数で自動登録される
  • lib/devbase/commands/env.py: devbase env sync_sync_host() を追加。ホスト情報はソースファイルを持たないため hash 比較は使わず、欠落キーのみ既定値で補完(既存値=手動上書きは尊重して上書きしない)。導入前の .env への後付け backfill として機能する
  • docs/user/environment-variables.md: #### host 節とコレクタ一覧へ追記
  • tests/env/test_collector_host.py(新規): コレクタ + sync backfill の単体テスト 9 ケース
  • issues/PLAN48_host-ssh-user-env.md(新規): 設計 plan

非対話 / CI の挙動

safe_input は EOF 時に既定値を返すため、非対話/CI でも HOST_SSH_USER=getpass.getuser()HOST_SSH_HOST=host.docker.internal が設定される。getpass.getuser() がユーザー名を取得できない環境では HOST_SSH_USER を安全にスキップする。

セキュリティ

HOST_SSH_USER はユーザー名のみで秘密情報ではない。SSH 鍵やリモートログイン有効化はホスト側でユーザーが別途設定する前提。

動作確認

  • tests/env/test_collector_host.py 9 ケース pass
  • 全体テスト 706 passed / 1 skipped(既存)で回帰なし
  • ローカルで ./bin/devbase --help が正常に動作する
  • ドキュメント (docs/user/environment-variables.md) を更新した

コンテナ→ホスト SSH (ホスト側 GUI アプリ起動) ワークフロー向けに、ホストの
ログインユーザー名 / SSH 先ホスト名を収集する host コレクタを追加。

- keys.py: HOST_SSH_USER / HOST_SSH_HOST 定数追加
- collectors/host.py: getpass.getuser() を既定値に提示、safe_input で上書き可
  (非対話/CI は既定値設定、getuser 空時は安全スキップ)
- cmd_env_sync: _sync_host() で欠落キーのみ既定値補完 (手動上書きは尊重)
- docs: environment-variables.md に host 節追記
- tests: コレクタ + sync backfill の単体テスト 9 ケース

Closes #48

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | APPROVE

指摘事項はありません。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | gemini | APPROVE

変更内容を確認し、要件通りに実装されていることを確認しました。

@takemi-ohama takemi-ohama merged commit c84e2d6 into main Jun 13, 2026
5 checks passed
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.

feat: devbase env init で HOST_SSH_USER を自動設定する

1 participant