iT邦幫忙

2026 iThome 鐵人賽

0
Build on Google AI

將考國際證照的應用程式變成開源系列 第 61

什麼是 Google Cloud Run 自動化發布管線?

  • 分享至 

  • xImage
  •  

💡 什麼是 Google Cloud Run 自動化發布管線?

簡單來說,「透過 Cloud Build 雲端編譯並部署至 Cloud Run」 是一種現代化、免在本機安裝沉重編譯工具(如 Docker 或建置環境)的雲端原生發布機制

它的整體運作流程與架構優勢如下:

1. 傳統本機發布 vs. 雲端建置管線(Cloud Build)

比較項目 傳統本機手動發布 本專案的 Google Cloud 原生發布管線
本機電腦要求 必須安裝 Docker Desktop、耗費幾十 GB 硬碟空間、電腦 CPU 滿載 只需安裝輕量的 gcloud 指令列工具,本機無須 Docker
建置環境 依賴開發者本機的作業系統與網路環境,容易「我的電腦可以跑、你的不行」 在 Google Cloud 雲端高速 Linux 容器中乾淨隔離編譯
發布安全性 本機若有快取殘留或秘密配置,容易不小心打包出去 依照嚴格的 .gcloudignore 與 Dockerfile 規格,零機密外洩

2. 這套自動化管線在背後做了哪些事?(端到端流程)

當您在終端機執行 .\deploy.ps1 時,腳本在背後全自動完成了以下 5 個步驟:

flowchart LR
    A["1. 本機原始碼 (Flutter)"] -->|"打包上傳"| B["2. Google Cloud Build (雲端工廠)"]
    B -->|"多階段編譯 Web 靜態檔 + Nginx"| C["3. Artifact Registry (映像檔倉庫)"]
    C -->|"自動發布最新容器"| D["4. Google Cloud Run (無伺服器託管)"]
    D --> E["5. 全球用戶存取 (HTTPS 網址)"]
  1. 打包上傳原始碼
    • 排除敏感的 .env 檔案與非必要快取,將純原始碼以加密方式上傳至專案專屬的 GCS 暫存儲存區。
  2. Google Cloud Build 雲端接手編譯(雲端工廠)
    • Google 會動態啟動一台強大的虛擬編譯機,依據專案內的 Dockerfile 執行多階段構建(Multi-stage build):
      • 第一階段:下載 Flutter 官方編譯映像檔,執行 flutter pub getflutter build web --release,將專案編譯為高效能的 HTML/JS/Wasm 靜態網頁檔案。
      • 第二階段:使用極輕量的 nginx:alpine 伺服器,將編譯好的檔案打包成一個體積僅數十 MB 的 Production Docker 容器映像檔。
  3. 推送到 Artifact Registry(容器倉庫)
    • 編譯完成的容器會自動存放於 Google 的專屬私人存放區(如 asia-east1-docker.pkg.dev/...)。
  4. 發布至 Google Cloud Run(無伺服器核心)
    • Cloud Run 接收到最新映像檔後,以**零停機時間(Zero-downtime)**滾動更新,將 100% 流量切換至最新版本。
    • 特色:具備自動彈性擴縮(無人使用時自動縮容至 0 節省成本;流量暴增時數秒內自動分流),並自帶 Google 頂級 DDoS 防禦與免費 HTTPS 憑證。
  5. 自動健康清理
    • 部署成功後,腳本還會主動清除雲端倉庫中過期的舊映像檔,避免產生不必要的儲存庫閒置費用。

這就是現代雲端 DevOps 的標準作業:「本機只管寫程式,編譯、封裝、部署與維運全交給 Google Cloud 自動化」

專案調整與發布成果回顧

🎯 任務達成重點

依據您的指示,已順利完成以下所有項目的調整、驗證、雲端發布與版本控制同步:

1. 取消固定三維度解析話術

  • 檔案ai_offline_reasoning_engine.dart
  • 調整內容:徹底移除「針對您詢問的...我們可以從『概念本質』、『運作流程』與『實務應用』三個維度來完整解析」等陳腔濫調,改為直接針對問題切入核心技術原理、處理流程與實務考量的專業架構解答。

2. 取消 [ 頂尖專家深度解析 ] , [ 資料工程師實戰指引 ] , [ 首席架構顧問諮詢 ]

  • 介面端ai_tutor_screen.dart 移除了頂部的 PersonaSelectorWidget 晶片切換列,讓 AI 助教的對話視窗簡潔清爽。
  • 推理與提示詞ai_service.dartai_offline_reasoning_engine.dart 不再硬性分割角色模式或輸出特定標籤,統一融會核心機制、實務操作與全域架構建議為一體。

3. 單元測試驗證

  • 執行命令flutter test
  • 結果:全套 55 項自動化測試全數 100% 綠燈通過(含考題 RAG、登入權限、離線模型與推理引擎)。

4. 發布至 Google Cloud Run

5. 上傳至 GitHub

  • 變更已提交至 main 分支並成功推送至遠端倉庫:
    commit: dffb549 feat(ai): 取消三維度解析話術與 Persona 角色切換欄,簡化為全方位專業解答架構
    remote: git@github.com:alan-nanpie/OpenPassExam.git
    

上一篇
將 App 調整成符合 Gemini 3.8 Flash 模型要求
下一篇
驗證使用 [ AI 助教 ] 後的結果
系列文
將考國際證照的應用程式變成開源64
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言