mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-12 12:54:07 -07:00
2.6 KiB
2.6 KiB
Mission: GCE Container-First Refactor 🚀
Current State
- Architecture: Persistent GCE VM (
gcli-offload-mattkorwel) with Fast-Path SSH (gcli-worker). - Logic: Decoupled scripts in
~/.offload/scripts, using Git Worktrees for concurrency. - Auth: Scoped GitHub PATs mirrored via setup.
The Goal (Container-OS Transition)
Shift from a "Manual VM" to an "Invisible VM" (Container-Optimized OS) that runs our Sandbox Docker image directly.
Planned Changes
- Multi-Stage Dockerfile: ✅ VERIFIED
- Optimize
.gcp/Dockerfile.maintainerto includetsx,vitest,gh, and system dependencies (libsecret,build-essential). - Verified locally: Node v20, GH CLI, Git, TSX, and Vitest are functional with required headers.
- Optimize
- Dedicated Pipeline:
- Use
.gcp/maintainer-worker.ymlfor isolated builds. - Tagging Strategy:
latest: Automatically updated on every merge tomain.branch-name: Created on-demand for PRs via/gcbruncomment.
- Use
- Setup Script (
setup.ts):- Refactor
provisionto usegcloud compute instances create-with-container. - Point to the new
maintainerimage in Artifact Registry.
- Refactor
- Orchestrator (
orchestrator.ts):- Update SSH logic to include the
--containerflag.
- Update SSH logic to include the
GCP Console Setup (Two Triggers)
Trigger 1: Production Maintainer Image (Automatic)
- Event: Push to branch.
- Branch:
^main$. - Configuration: Point to
.gcp/maintainer-worker.yml. - Purpose: Keeps the stable "Golden Image" up to date for daily use.
Trigger 2: On-Demand Testing (Comment-Gated)
- Event: Pull request.
- Base Branch:
^main$. - Comment Control: Set to "Required" (e.g.
/gcbrun). - Configuration: Point to
.gcp/maintainer-worker.yml. - Purpose: Allows developers to test infrastructure changes before merging.
Phase 2: Refactoring setup.ts for Container-OS
This phase is currently ARCHIVED in favor of the Persistent Workstation model.
Implementation Logic (Snapshot)
The orchestrator should launch isolated containers using this pattern:
docker run --rm -it \
--name offload-job-id \
-v ~/dev/worktrees/job-id:/home/node/dev/worktree:rw \
-v ~/dev/main:/home/node/dev/main:ro \
-v ~/.gemini:/home/node/.gemini:ro \
-w /home/node/dev/worktree \
maintainer-image:latest \
sh -c "tsx ~/.offload/scripts/entrypoint.ts ..."
How to Resume
- Review the archived container-launch logic above.
- Update
setup.tsto usegcloud compute instances create-with-container. - Update
orchestrator.tsto usedocker runinstead of standardssh.