這次要分享兩個超互補的 labs:
GSP1329(程式碼生成)+ GSP1330(單元測試)。

這兩個 labs 聚焦在 Gemini Code Assist 如何協助開發團隊更有效率地建置、測試和部署應用程式。從自然語言生成程式碼,到自動生成單元測試,再到協助除錯和邊界條件測試,展示了 AI 如何成為開發者的最佳拍檔。

GSP1329-Code Generation with Gemini
GSP1330-Unit Testing with Gemini

主要特色

➊ Gemini Code Assist 的實際應用場景
➋ 從程式碼生成到測試的完整開發流程
➌ 自然語言驅動的程式設計體驗
➍ 自動化測試生成和邊界條件覆蓋
➎ 即時除錯和程式碼優化建議
➏ Cloud Run + Cloud Functions 的混合架構實作

Lab 實作

➊ 設定 Gemini Code Assist 開發環境和 IAM 權限
➋ 建置 Cloud Run 後端服務與前端介面整合
➌ 使用 Gemini 生成 newproducts API 端點程式碼
➍ 將業務邏輯提取到 Cloud Functions 微服務
➎ 使用 Gemini Chat 協助 Firestore 查詢除錯
➏ 開發完整的單元測試

一樣附上指令整理和實作影片~
後續會繼續分享參加計劃的心得!

𝕂𝕖𝕖𝕡 𝕝𝕖𝕒𝕣𝕟𝕚𝕟𝕘. 𝕂𝕖𝕖𝕡 𝕙𝕒𝕔𝕜𝕚𝕟𝕘!

實作影片

指令整理

環境初始化

此部分設定 GCP 專案的基礎環境變數和開發環境。這些變數在後續指令中被引用,確保所有操作都在正確的專案、區域、實例上執行。同時啟用必要的 API 和設定 IAM 權限,讓 Gemini Code Assist 能夠正常運作。

export PROJECT_ID=$(gcloud config get-value project)
export USER=$(gcloud config get-value account)
export REPO_NAME=store-repo
export REGION=Lab Region
export ZONE=Lab Zone
export APP_NAME=inventory

常見坑點:忘記設定 USER 變數會導致 IAM 權限設定失敗,Gemini Code Assist 無法使用
概念連結:這些環境變數會在 Docker 建置和 Cloud Run 部署時被重複使用

Gemini Code Assist 設定

Gemini Code Assist 是 Google Cloud 的 AI 程式設計助手,能夠根據自然語言提示生成程式碼、解釋現有程式碼、協助除錯,甚至生成測試。這個概念代表了 AI 輔助開發的新時代,讓開發者能夠專注在業務邏輯而非重複的程式碼撰寫。

# 啟用必要的 API
gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID}

# 設定 IAM 權限讓使用者可以使用 Gemini
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer

# 設定 Docker 認證以便推送到 Container Registry
gcloud auth configure-docker

常見坑點:IAM 權限設定後需要等幾分鐘才會生效,如果立即使用 Gemini 會出現權限錯誤
概念連結:Gemini 的權限設定是雲端 AI 服務的基礎,其他 AI 服務如 Vertex AI 也需要類似的權限配置

容器化與部署架構

這兩個 labs 展示了現代雲端應用的典型部署模式:使用 Docker 容器化應用程式,然後部署到 Cloud Run 這種無伺服器平台。這種架構提供了自動擴展、高可用性,並且開發者可以專注在程式碼而非基礎設施管理。

# 建置容器映像
cd ~/cymbal-superstore/backend
docker build -t gcr.io/$PROJECT_ID/cymbal-superstore-inventory-api:latest .

# 推送映像到 Container Registry
docker push gcr.io/$PROJECT_ID/cymbal-superstore-inventory-api:latest

# 部署到 Cloud Run
gcloud run deploy inventory --image=gcr.io/$PROJECT_ID/cymbal-superstore-inventory-api --port=8000 --region=$REGION

常見坑點:忘記指定 --port=8000 會導致 Cloud Run 無法正確路由流量
概念連結:容器化是現代 DevOps 的核心,Cloud Run 則是無伺服器運算的實現

微服務提取與 Cloud Functions

當應用程式成長時,將特定功能提取到獨立的微服務是常見的架構演進。Cloud Functions 提供了事件驅動的無伺服器運算,讓開發者能夠專注在業務邏輯而非基礎設施。這種架構提高了系統的可維護性和擴展性。

# 部署 Cloud Function 作為微服務
cd ~/cymbal-superstore/functions
gcloud functions deploy newproducts --runtime nodejs20 --trigger-http --allow-unauthenticated --region=$REGION

常見坑點:Cloud Functions 的區域必須與其他資源一致,否則會有延遲和額外費用
概念連結:微服務架構與無伺服器運算是現代雲端應用的兩個核心概念,Cloud Functions 讓微服務的實現變得簡單

測試驅動開發與單元測試

測試驅動開發 (TDD) 是一種開發方法論,強調先寫測試再寫程式碼。Gemini Code Assist 在這個過程中能夠協助生成測試案例、檢查邊界條件,並確保程式碼的品質。良好的測試覆蓋率是確保軟體可靠性的關鍵。

# 運行測試套件
cd ~/cymbal-superstore/backend
npm run test

# 啟動開發伺服器進行手動測試
npm run start

# 測試 API 端點
curl localhost:8000/newproducts

常見坑點:測試前要確保資料庫中有適當的測試資料,否則測試會失敗
概念連結:測試是軟體開發生命週期的重要環節,與程式碼生成的 CI/CD 流程密切相關

Google Cloud AI Study Jam 2025 學習系列 29