本手冊紀錄了如何利用 Google Antigravity 的 Agent 能力,在不手寫大量設定檔的情況下,快速重現「雲端原生部落格終極藍圖」架構。我們從零打造了一個基於 Hugo、Docker (Chainguard)、Terraform 與 Cloud Run 的高可用性部落格系統。
📋 目錄
1. 專案簡介與架構
🚀 Live Demo: https://ailab.yuting.cc/
本實驗室透過 Antigravity Agent 協調以下技術堆疊,實現 100% 代碼管理與自動化部署:
- 🎨 應用層:Hugo (靜態網站生成器) + Congo Theme (Tailwind CSS)
- 🔒 容器層:Multi-stage Build + Chainguard Nginx Images (最小權限安全性)
- 🏗️ 基礎設施層:Terraform (IaC) 管理 Cloud Run, Artifact Registry, Load Balancer, CDN
- ⚡ 開發流程:Agent 驅動的本地熱重載 (Hot-reload) 與 GitOps 自動化
架構流程圖

2. 先決條件
在開始之前,請確保您已具備以下條件:
- Google Antigravity IDE:已安裝並更新至最新版本。
- Google Cloud Platform (GCP) 帳號:擁有一個已啟用帳單 (Billing) 的專案 (
linklin-lab)。 - Antigravity 設定:已切換至 Enterprise Mode。已連結目標 GCP 專案。
- Cloud Build 連線:需注意 Cloud Build 與 GitHub Repository 的連結必須在 GCP Console 中手動完成授權,無法完全透過 CLI 自動化。
3. 階段 1:環境初始化與專案建置
🎯 目標:讓 Agent 準備開發環境並生成 Hugo 網站骨架。
實作細節
- API 啟用:啟用了 Cloud Run, Artifact Registry, Cloud Build, Compute Engine。
- Hugo 站點:建立了
link-blog專案,並設定Congo主題。 - Git 初始化:初始化了 Git Repository 並推送到 GitHub (
LinkGitData/hugo)。
🤖 Agent Prompt: “在當前目錄下建立一個名為 ’link-blog’ 的新 Hugo 網站。使用 ‘Congo’ 主題。初始化 git repository 並推送到 ‘LinkGitData/hugo’。”
4. 階段 2:容器化與本地預覽
🎯 目標:生成符合安全最佳實踐的 Dockerfile 並進行本地測試。
實作細節
我們使用了 Multi-stage build 來優化映像檔大小與安全性:
- Build Stage: 使用
klakegg/hugo:ext-alpine生成靜態檔案。 - Run Stage: 使用
cgr.dev/chainguard/nginx:latest提供服務。 - 配置: Nginx 設定為監聽
$PORT環境變數,符合 Cloud Run 要求。
🤖 Agent Prompt: “為這個 Hugo 專案建立一個 multi-stage Dockerfile。Stage 1 使用 ‘klakegg/hugo:ext-alpine’ 來建置網站。Stage 2 使用 ‘cgr.dev/chainguard/nginx:latest’ 來提供靜態檔案服務。設定 Nginx 監聽 $PORT 環境變數所定義的連接埠。”
5. 階段 3:基礎設施即代碼 (Terraform 生成)
🎯 目標:由 Agent 生成定義 Cloud Run、Load Balancer 與 CDN 的 Terraform 代碼。
實作細節
我們在 infra/ 目錄下建立了 Terraform 設定,並成功部署了以下資源:
- Artifact Registry:
link-blog-repo - Cloud Run Service:
link-blog-service - Load Balancer: Global External HTTPS Load Balancer (含 Cloud CDN)
- Backend State: 使用 GCS Bucket
linklin-lab-tfstate儲存 Terraform 狀態。
🤖 Agent Prompt: “為名為 ’link-blog-service’ 的 Cloud Run 服務生成 Terraform 設定。它應該使用 Artifact Registry ’link-blog-repo’ 中的映像檔。同時建立一個 Global External HTTPS Load Balancer,並為網域 ‘ailab.yuting.cc’ 設定託管的 SSL 憑證。使用 GCS bucket ’linklin-lab-tfstate’ 作為 backend state。”
💡 經驗分享:在初始化 Terraform 時,我們遇到了 GCS 權限問題,通過
gcloud auth application-default login重新驗證解決。
6. 階段 4:CI/CD 自動化管線
🎯 目標:設定 GitOps 流程,讓 Git Push 自動觸發 Cloud Build 進行部署。
實作細節
- Cloud Build 設定: 建立了
cloudbuild.yaml,定義了 Build -> Push -> Deploy 流程。 - GitHub 連結: 這是關鍵的一步。我們需要在 GCP Console 中手動將 GitHub Repository (
LinkGitData/hugo) 連結到 Cloud Build。 - 觸發器 (Trigger): 設定了
link-blog-trigger,當main分支有 Push 時自動觸發。
🤖 Agent Prompt: “建立一個 cloudbuild.yaml 檔案,負責建置 Docker 映像檔、推送到 Artifact Registry,並部署到 Cloud Run。此建置流程應由推送到 main 分支的動作觸發。”
⚠️ 重要提示:Cloud Build 的 GitHub Repository 連結必須在 GCP Console 中手動完成,無法完全透過 CLI 自動化。
7. 階段 5:驗證與體驗
🎯 目標:確認全域部署成功,並體驗「熱重載」開發流程。
驗證結果
- 本地預覽:
localhost:1313成功運行。 - 雲端部署: Cloud Run 服務已上線,並透過 Load Balancer 提供服務 (https://ailab.yuting.cc/)。
- CI/CD: 推送代碼到 GitHub 後,Cloud Build 自動觸發並更新了服務。
8. 清理資源
🛑 警告:為避免產生不必要的 GCP 費用,實驗結束後請務必清理資源。
cd infra
terraform destroy
文件版本: 1.3 | 更新日期: 2025-12-03
