Skip to content

feat(container): Antigravity CLI (agy) をベースイメージへ追加する - #130

Merged
takemi-ohama merged 3 commits into
mainfrom
feat/antigravity-cli
Aug 30, 2026
Merged

takemi-ohama merged 3 commits into
mainfrom
feat/antigravity-cli

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

Pull Request

概要

Google の AI コーディングエージェント Antigravity CLI (agy) をベースイメージへ追加し、既存の claude / gemini / codex / kiro と同じくコンテナ内からすぐ使えるようにします。

インストーラは ~/.local/bin へ単体バイナリを置く方式で、SHA512 を検証し linux の amd64 / arm64 どちらでも動くため、claude と同じ USER ubuntu 側へ置きました。設定と認証は ~/.gemini/antigravity-cli/ 配下に置かれるため、PLAN39 でグループ単位に永続化した .gemini にそのまま乗ります(コンテナを作り直しても再認証は不要、グループをまたいだ共有も起きません)。

関連 Issue

  • なし

変更点

  • containers/base/Dockerfile
    • ユーザー用ツールの RUN で curl -fsSL https://antigravity.google/cli/install.sh | bash を実行
    • エイリアス agy を --dangerously-skip-permissions 付きで追加。Gemini CLI の --yolo に相当するフラグは Antigravity CLI には無く、確認の抑止はこの 1 本だけです
  • docs/user/container-operations.md — AI CLI エイリアス表に agy を追加。.gemini の行に Antigravity CLI の設定が同居することを追記
  • CHANGELOG.md — Unreleased の Added に追加

動作確認

  • ローカルで ./bin/devbase --help が正常に動作する
  • uv run pytest が green(1676 passed)
  • ベースイメージを再ビルドし、コンテナ内で agy が PATH 上にあり 1.1.22 を返す
  • type agy がエイリアスとして展開される
  • 必要に応じてドキュメント (docs/, README.md) を更新した
  • CI が green である

スクリーンショット・ログ(任意)

$ docker buildx build --load -t devbase-base:latest containers/base
...
#20 unpacking to docker.io/library/devbase-base:latest done

$ docker run --rm -u ubuntu devbase-base:latest bash -lc 'command -v agy; agy --version'
/home/ubuntu/.local/bin/agy
1.1.22

$ docker run --rm -u ubuntu devbase-base:latest bash -ic 'type agy'
agy is aliased to ... --dangerously-skip-permissions

$ uv run pytest -q
1676 passed in 70.69s

補足

  • イメージサイズ: 6.75GB → 7GB(バイナリ約 198MB)。
  • 反映にはベースイメージの再ビルドが要ります。各プロジェクトのイメージは FROM devbase-base を焼き直さないと agy が入りません。
  • インストーラは .bashrc / .zshrc / .profile へ PATH 行を追記します。devbase が入れる行と内容が同一なので実害はありません。現行スクリプトに実在するフラグは -d/--dir と -h だけで、公式ドキュメントに載っている --skip-aliases / --skip-path はスクリプト側に存在しませんでした。
  • agy はバックグラウンドで自己更新しますが、~/.local/bin は永続化対象外なのでコンテナ作り直しでイメージの版へ戻ります。

Google の AI コーディングエージェント Antigravity CLI を、既存の claude /
gemini / codex / kiro と同じくコンテナ内からすぐ使えるようにする。

インストーラは ~/.local/bin へ単体バイナリを置く方式で、SHA512 を検証し
linux の amd64 / arm64 どちらでも動くため、claude と同じ USER ubuntu 側へ置いた。
併せて .bashrc / .zshrc / .profile へ PATH 行を足すが、devbase が入れる行と
内容が同一で実害は無い (--skip-path 相当の口は現行スクリプトに無い)。

エイリアスは --dangerously-skip-permissions 付きにする。Gemini CLI の --yolo に
相当するフラグは Antigravity CLI には無く、確認の抑止はこの 1 本だけである。

設定と認証は ~/.gemini/antigravity-cli/ 配下に置かれるため、PLAN39 で
グループ単位に永続化した .gemini にそのまま乗る。コンテナを作り直しても
再認証は要らず、アカウントグループをまたいで共有もされない。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HQWF4ETha9HwZs18k6ijUk

@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 | REQUEST_CHANGES

インストール失敗を成功扱いにする経路を解消し、ビルド時に agy の実体を検証してください。

Comment thread containers/base/Dockerfile Outdated

@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 | REQUEST_CHANGES

  • docs/comparison.md (行 85, 154, 217 付近): AI CLI ツールの一覧(claude / codex / gemini / kiro)を記載している箇所が複数あります。本 PR で agy を追加したため、これらの記載にも agy を併記してドキュメントの一貫性を保つことを提案します。

curl をパイプで bash へ直結すると、Dockerfile の既定 shell に pipefail が
無いため curl の失敗が bash の成功で覆い隠され、agy を含まないイメージが
成功扱いで生成されうる。インストーラを一度ファイルへ落としてから実行し、
最後に ~/.local/bin/agy --version で実体を検証する。

併せて docs/comparison.md の AI CLI 一覧 3 箇所へ agy を併記する。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HQWF4ETha9HwZs18k6ijUk
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 cross-review fix | round 1

commit: 937c55cc8213c1deb55e918931cd694af86a0057

対応件数

区分 件数
修正済み 2
deferred 0
rejected 0
合計 2

重要度別(独自再判定後)

重要度 件数 内訳
critical 0 —
major 1 codex: インストール失敗が成功扱いになる経路
minor 1 gemini: docs/comparison.md の AI CLI 一覧に agy が未反映
nit 0 —

修正内容

1. [major] containers/base/Dockerfile — インストール失敗を成功扱いにする経路(codex, thread)

本 Dockerfile に SHELL 指示は無く既定の /bin/sh -c のため pipefail が無効で、curl ... | bash は curl が落ちても空入力を受けた bash が 0 で終了し、agy の無いイメージが成功扱いで焼けます。指摘は妥当と判断し major で再判定。

curl -fsSL https://antigravity.google/cli/install.sh -o agy-install.sh; \
bash agy-install.sh; \
rm -f agy-install.sh; \
"$HOME/.local/bin/agy" --version; \
  • 一度ファイルへ落とすことで curl -f の失敗が set -eux に拾われ、ビルドが即失敗します
  • 末尾の "$HOME/.local/bin/agy" --version でバイナリの実体と配置先を検証します(この RUN は USER ubuntu かつ非対話 shell で ~/.bashrc を読まないため絶対パス)

2. [minor] docs/comparison.md — AI CLI 一覧の一貫性(gemini, review body)

指摘どおり 3 箇所(L85 / L154 / L217)が claude / codex / gemini / kiro のままで、本 PR が agy を追加したことにより記述が事実と食い違うため、ドキュメント正確性の問題として minor で再判定し修正しました(nit ではなく修正対象)。

  • L85 - **AI CLI 同梱**(claude / codex / gemini / kiro / agy)
  • L154 - **AI CLI(claude/codex/gemini/kiro/agy)を多用**しつつ…
  • L217 `claude` / `codex` / `gemini` / `kiro` / `agy` をベースイメージに同梱。

deferred

なし。

rejected

なし。

検証

  • uv run pytest → 1676 passed
  • docker run --rm ubuntu:24.04 で新しいインストール手順を実行 → ✓ Download complete and checksum verified. の後 agy --version が 1.1.22 を返すことを確認
  • 修正前の CI スナップショット(gh pr checks 130)は Python syntax check 3.10/3.11/3.12・Ruff lint・ShellCheck すべて pass、FAILURE なし

@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 2 | 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 2 | gemini | APPROVE

変更内容(Antigravity CLI 追加、エイリアス設定、設定ディレクトリの永続化、ドキュメント・CHANGELOGの追従)に不足や副作用のリスクは見当たりません。
設定の永続化先 (.gemini) も既存のグループボリュームのリストと一致しており、再作成時の安全性が確保されています。Docker の RUN でパイプ直結を避けている点も適切です。

@takemi-ohama
takemi-ohama merged commit 9a4dc8a into main Aug 30, 2026
5 checks passed
@takemi-ohama
takemi-ohama deleted the feat/antigravity-cli branch August 30, 2026 18:01
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