docs(PLAN39): Google 認証の手順書を追加する (PLAN39 PR5) - #127
Conversation
アカウントグループごとの gcloud / gws 認証手順を新規に書き起こす。コマンドと出力は すべて実機 (carmo-ai / gcloud 582.0.0 / gws 0.22.5) で実行した結果を貼っている。 - 前提 — アカウントグループとボリュームの対応、`~/.config/gcloud` は gcloud の 設定ディレクトリ**ではない**こと ($CLOUDSDK_CONFIG を見る) - 新しいグループの初回セットアップ — env への記述から起動・確認まで。使えない グループ名 3 種の実際のエラー出力 - gcloud — `gcloud auth login` (フラグ不要で URL + 認証コードのフローになる) と `gcloud auth application-default login` の 2 回。`--update-adc` を既定にしない理由。 コンテナを作り直しても認証が残ることの確認手順 - グループごとに別アカウントになっていることの確認 (ボリュームを直接覗く) - gws — setup が GCP プロジェクトを要すること、OAuth クライアントの手動作成、 クライアントシークレットを env に書いてはいけないこと、login が localhost コールバック方式でホストのブラウザからは中継が要ること、 制限付きスコープで同意画面が進まないときの回避 - 認証モードの切り替え — adc / key / 未設定の使い分けと鍵が要る場面 - 確認コマンド — 自分のグループの確認方法を含む - トラブルシュート — DefaultCredentialsError の 2 種類の見分け、database is locked、 意図しないアカウントで操作していた場合 README の目次にも追加した。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
変更内容を確認しました。指摘事項はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
quota project に関する手順の条件を、掲載している実行結果と一致するよう修正してください。
`gcloud auth application-default login` が quota project を必ず書くと 読める記述を、利用可能な project を解決できた場合に限る旨へ改める。 掲載している実行例は `Cannot find a quota project` となっており、 断定のままだと実出力と矛盾していた。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
🔧 /ndf:fix サマリ (round 1)対応件数: critical=0 / major=0 / minor=1 / nit=0 (合計 1 件) 詳細
品質チェック
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
`devbase build --no-cache` 後の実機 (carmo-ai を default / kkg の 2 グループで起動) で AC1〜AC14 をすべて確認し、根拠つきの結果表を追加した。 検証中に見つかった 2 件は PLAN39 の退行ではないため別件として記録した。 - 旧世代スナップショットの incr-002 適用で GNU tar が rename に失敗する (現行 main と同じ旧コマンド形式で再現するため PLAN39 由来ではない) - $DEVBASE_ROOT/env が .gitignore の対象外で、機密を誤って書くと混入しうる Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | REQUEST_CHANGES
完了判定と記載された検証結果の矛盾を解消してください。
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 50eeb18ca5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | gemini | APPROVE
変更内容は目的に沿っており、アカウントグループ分離や gcloud / gws 認証の挙動・ドキュメントなど、セキュリティ・仕様面でも適切に実装されています。特筆すべき修正提案はありません。
2 行目の "This is not an officially supported Google product." が抜けていた。 実出力をそのまま貼る方針に合わせる。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
訂正: round 2 の指摘 2 件についてround 2 で $ docker exec carmo-ai-dev-1 gws --version
gws 0.22.5
This is not an officially supported Google product.
$ echo $?
0
$ docker run --rm --entrypoint gws devbase-base:latest --version
gws 0.22.5
This is not an officially supported Google product.
$ echo $?
0あわせて、対応したとされたコミット したがって 🤖 Generated with Claude Code |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | codex | APPROVE
修正が必要な指摘はありません。
cross-review round 2 の指摘へ対応した。 - AC9 の根拠を「full + incr-001 まで」に限定し、incr-002 の失敗が PLAN39 前の main でも再現する別件であることを明示した - 完了の定義から本 PR #127 を切り出し、レビュー収束まで未チェックにした - コンテナ再作成の手順で devbase project login による入り直しを明示した (gcloud / gws の 2 箇所) - トラブルシュートに ADC の再認証を追記した。gcloud config set account と gcloud auth revoke は CLI 側しか変えないため、ライブラリ経由の呼び出しが 古いアカウントのまま残る Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | gemini | APPROVE
追加・修正されたドキュメントおよび検証記録について、技術的な問題や矛盾は見当たりませんでした。
🔧 /ndf:fix サマリ (round 2)対応件数: critical=0 / major=2 / minor=2 / nit=0 (合計 4 件) 詳細
品質チェック
|
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | codex | REQUEST_CHANGES
プロジェクト名を指定したコンテナ接続手順を、実際の CLI 構文に合わせて修正してください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | gemini | APPROVE
ドキュメントの記述内容、検証手順、コマンド例のいずれも実機の挙動と整合しており、手順の安全性・正確性に関する懸念はありませんでした。
`devbase project login` の positional はコンテナ index であり、プロジェクト名を 渡すと解決に失敗する (cli.py の _add_login_subparser / bin/devbase:357-364)。 名前で解決してくれるのはトップレベルシノニムの `devbase login <name>` なので 5 箇所を差し替えた。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 62cf0d7891
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | codex | APPROVE
修正を要する指摘はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | gemini | APPROVE
ドキュメントの記述内容・手順は妥当であり、実機検証の結果も正確に反映されています。特に修正すべき点はありません。
- ADC の確認で `type(c).__name__` は user / service account を区別できない (両方 `Credentials`)。決め手は `__module__` である旨と実出力を追記 - 4.3 の `docker exec ... gws auth login` がホスト側であることを明示 - `GCP_AUTH_MODE=key` は鍵の env が無いと警告して adc へ倒れることを表と Warning に明記 (lib/devbase/env/gcp_auth.py の resolve_auth_mode) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
Pull Request
概要
PLAN39 の最後の 1 本。アカウントグループごとに人が 1 回だけ対話的に認証するという
この仕組みの前提を、手順書として書き起こします。PR1〜PR4 は「仕組みを作る」タスクでしたが、
その 1 回をどう実施するかが書かれていないと、新しいグループを足すたびに手探りになります。
コマンドと出力はすべて実機で実行した結果を貼っています(
carmo-aiコンテナ /gcloud 582.0.0 / gws 0.22.5 /
defaultとkkgの 2 グループ)。想像で書いた箇所はありません。関連 Issue
変更点
docs/user/google-auth.md(新規・約 560 行)README.md— ドキュメント目次へ追加実機で通して分かったこと(手順書へ反映済み)
プランの Task 8 は「未認証のグループを 1 つ用意して最初から通す。詰まった箇所は手順書へ
反映してから完了とする」としています。実際に詰まったのは次の 6 点です。
gcloud auth loginだけでは ADC ファイルが作られないlsで無いことを示したgcloud auth application-default set-quota-projectを併記gws auth setupは GCP プロジェクトを要求する(GOOGLE_CLOUD_PROJECTenv は見ない)--project/gcloud config set projectと、--dry-runでの事前確認を追加gws auth setupは OAuth クライアントを自動生成できず Console での手動作成が要るenvに書かない警告を追加gws auth loginはコンテナ内のlocalhost:<ランダムポート>でコールバックを待つ--readonlyに含まれるdrive/gmailは制限付きスコープで、同意画面が進まないことがある--scopesで絞る回避策を追加4 の「シークレットを
envに書かない」は実際に踏みました。envはsourceされるため、KEY=値の形でない行を書くとdevbaseコマンド自体がcommand not foundで壊れます。5 は原因まで特定しています。
gwsのコールバックサーバーは127.0.0.1にしかバインドしないため、コンテナ IP へのポート中継では原理的に届きません(実測: コンテナ内の
127.0.0.1:PORTは HTTP 400 を返すが、コンテナ IP 宛ては接続不可)。
書いた内容
~/.config/gcloudは gcloud の設定ディレクトリではないことenvへの記述から起動・確認まで。使えないグループ名 3 種の実エラー出力auth loginとauth application-default login。--update-adcを既定にしない理由(quota project)。コンテナを作り直しても認証が残ることの確認。グループごとに別アカウントになっていることの確認adc/key/ 未設定の使い分けと、鍵が要る場面DefaultCredentialsErrorの2 種類の見分け(were not found= 未ログインの正常な状態 /File ... was not found= 実体の無いパスが残っている)、database is locked、意図しないアカウントで操作していた場合満たす受け入れ条件
kkg)を用意して最初から通し、詰まった箇所を反映したあわせて、この通し作業のなかで AC1 と AC2 も実機で確定しました。
やらないこと(スコープ外)
env(非機密)が.gitignoreの対象外である件。機密を誤って書くとgit add -Aで混入しますが、PLAN39 のスコープ外なので別件とします動作確認
uv run pytestが green(1629 passed)container-operations.md/environment-variables.mdと相互参照)🤖 Generated with Claude Code
https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t