Skip to content

Infrastructure

CloudBank 使用 pnpm monorepoTurborepo 進行建置編排,使用 GitHub Actions 進行 CI/CD,以及跨越 Cloudflare Pages、EC2 和 Goldsky 的多目標部署策略。

單一回購結構

cloudbank/
├── contracts/        # Solidity contracts (Foundry)
├── services/         # Go backend services
├── apps/
│   ├── web/          # Trading UI (React + Vite)
│   ├── admin/        # Admin panel (React + Vite)
│   ├── node-presale/ # Node sale site (Next.js)
│   └── docs/         # Documentation (VitePress)
├── packages/
│   ├── subgraph/     # GraphQL queries & types
│   └── contracts/    # Generated ABIs & types
├── turbo.json        # Turborepo pipeline config
├── pnpm-workspace.yaml
└── package.json

建構編排

Turborepo 管理所有套件和應用程式的建置依賴關係圖:

  • turbo run build 依依賴順序建置所有套件。
  • turbo run test 使用快取在 monorepo 上執行測試。
  • 包輸出緩存在本地和遠端緩存中,因此未更改的包會跳過重建。
  • 管道在 turbo.json 中配置,具有明確 dependsOn 關係,確保 packages/*apps/* 之前建置。

CI/CD 管道

CloudBank 維護 31+ GitHub 操作工作流程,涵蓋每個組件的整個生命週期。

合約工作流程

WorkflowTriggerAction
contracts-buildPR 到主編譯合約,執行靜態分析
contracts-testPR 到主執行 Foundry 測試套件 (PR)
contracts-deploy-testnet人工調度透過 Foundry 腳本部署到 BSC Chapel
contracts-deploy-mainnet人工調度+審批透過多重簽章驗證部署到 BSC 主網

服務工作流程

WorkflowTriggerAction
services-buildPR 到主建立 Go 二進位文件,lint
services-testPR 到主使用競賽偵測器運行 Go 測試套件
services-deploy推送到主程式建置 Docker 映像,透過 SSH 部署到 EC2

應用程式工作流程

WorkflowTriggerAction
apps-buildPR 到主建立所有前端應用程式
apps-deploy推送到主程式部署到 Cloudflare 頁面

子圖工作流程

WorkflowTriggerAction
subgraph-buildPR 到主編譯 AssemblyScript 映射
subgraph-deploy推送到主程式部署到 Goldsky 託管服務

文檔工作流程

WorkflowTriggerAction
deploy-docs-test推送到主程式自動部署文件到測試環境
deploy-docs-live人工調度將文件部署到生產環境

部署目標

前端 — Cloudflare 頁面

所有前端應用程式都部署到 Cloudflare Pages,並針對拉取請求自動預覽部署。生產部署在推送到主分支時觸發。 Cloudflare 的邊緣網路在大多數區域提供全球 CDN 分佈,並在 50 毫秒以下 TTFB 。

後端 — EC2 + Docker Compose

Go 後端在使用 Docker Compose 編排的 EC2 實例上執行。該組合物包括:

  • API 伺服器 — 基於 Gin 的 HTTP 服務。
  • MySQL — 主資料儲存。
  • Redis — 快取、速率限制和會話儲存。

部署是透過 GitHub 操作中的 SSH 執行的,拉取最新的 Docker 映像並執行滾動重新啟動。

子圖——Goldsky

Graph 子圖部署到 Goldsky 的託管服務,該服務處理索引基礎架構、查詢服務和監控。部署使用整合到 CI 管道中的 Goldsky CLI。

合約—鑄造腳本

智能合約部署使用 Foundry 的 forge script 指令:

  • 測試網 (BSC Chapel) — 手動觸發,使用專用的部署者錢包。
  • 主網 (BSC) — 需要手動調度和環境審核門。

環境管理

GitHub 具有保護規則的環境可控制敏感部署:

  • 測試網 — 無需批准,所有維護人員都可以存取。
  • 主網 — 需要至少一名指定審閱者的批准。
  • 生產 — 後端生產部署需要批准。

每個環境都儲存與其他環境隔離的自己的一組秘密(RPC URLs、部署者密鑰、API 令牌)。機密在運行時注入到工作流程中,並且永遠不會保留在工件或日誌中。