Infrastructure
CloudBank sử dụng pnpm monorepo với Turborepo để điều phối bản dựng, GitHub Hành động cho CI/CD và chiến lược triển khai đa mục tiêu trên các Trang Cloudflare, EC2 và Goldsky.
Cấu trúc Monorepo
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.jsonXây dựng dàn nhạc
Turborepo quản lý biểu đồ phụ thuộc của bản dựng trên tất cả các gói và ứng dụng:
turbo run buildxây dựng tất cả các gói theo thứ tự phụ thuộc.turbo run testchạy thử nghiệm trên monorepo bằng bộ nhớ đệm.- Đầu ra của gói được lưu vào bộ đệm cục bộ và trong bộ đệm từ xa, vì vậy các gói không thay đổi sẽ bỏ qua việc xây dựng lại.
- Quy trình được định cấu hình trong
turbo.jsonvới các mối quan hệdependsOnrõ ràng, đảm bảopackages/*được xây dựng trướcapps/*.
Đường dẫn CI/CD
CloudBank duy trì 31+ GitHub Quy trình công việc hành động bao trùm toàn bộ vòng đời của mọi thành phần.
Quy trình làm việc hợp đồng
| Workflow | Trigger | Action |
|---|---|---|
| contracts-build | PR tới chính | Soạn thảo hợp đồng, chạy phân tích tĩnh |
| contracts-test | PR tới chính | Chạy bộ thử nghiệm Foundry (PR) |
| contracts-deploy-testnet | Gửi thủ công | Triển khai tới BSC Chapel thông qua tập lệnh Foundry |
| contracts-deploy-mainnet | Gửi thủ công + phê duyệt | Triển khai tới BSC Mainnet với xác minh nhiều chữ ký |
Quy trình làm việc của dịch vụ
| Workflow | Trigger | Action |
|---|---|---|
| services-build | PR tới chính | Xây dựng nhị phân Go, lint |
| services-test | PR tới chính | Bộ thử nghiệm Run Go với trình phát hiện chủng tộc |
| services-deploy | Đẩy vào chính | Xây dựng hình ảnh Docker, triển khai tới EC2 qua SSH |
Quy trình làm việc của ứng dụng
| Workflow | Trigger | Action |
|---|---|---|
| apps-build | PR tới chính | Xây dựng tất cả các ứng dụng giao diện người dùng |
| apps-deploy | Đẩy vào chính | Triển khai lên các trang Cloudflare |
Quy trình làm việc của đồ thị con
| Workflow | Trigger | Action |
|---|---|---|
| subgraph-build | PR tới chính | Biên dịch ánh xạ AssemblyScript |
| subgraph-deploy | Đẩy vào chính | Triển khai tới dịch vụ lưu trữ trên máy chủ Goldsky |
Quy trình làm việc tài liệu
| Workflow | Trigger | Action |
|---|---|---|
| deploy-docs-test | Đẩy vào chính | Tự động triển khai tài liệu cho môi trường thử nghiệm |
| deploy-docs-live | Gửi thủ công | Triển khai tài liệu vào sản xuất |
Mục tiêu triển khai
Giao diện người dùng — Trang Cloudflare
Tất cả các ứng dụng giao diện người dùng đều triển khai tới Trang Cloudflare với tính năng triển khai bản xem trước tự động cho các yêu cầu kéo. Triển khai sản xuất được kích hoạt khi đẩy tới nhánh chính. Mạng biên của Cloudflare cung cấp khả năng phân phối CDN toàn cầu với tốc độ dưới 50 mili giây TTFB ở hầu hết các khu vực.
Phần cuối - EC2 + Docker Compose
Phần phụ trợ của Go chạy trên một phiên bản EC2 được phối hợp với Docker Compose. Thành phần bao gồm:
- API máy chủ — Dịch vụ HTTP dựa trên Gin.
- MySQL — Kho dữ liệu sơ cấp.
- Redis — Bộ nhớ đệm, giới hạn tốc độ và lưu trữ phiên.
Việc triển khai được thực thi thông qua SSH từ GitHub Hành động, lấy hình ảnh Docker mới nhất và thực hiện khởi động lại từng đợt.
Đồ thị con — Goldsky
Biểu đồ con Graph được triển khai cho dịch vụ lưu trữ của Goldsky, dịch vụ này xử lý cơ sở hạ tầng lập chỉ mục, cung cấp truy vấn và giám sát. Việc triển khai sử dụng Goldsky CLI được tích hợp vào quy trình CI.
Hợp đồng - Tập lệnh Foundry
Việc triển khai hợp đồng thông minh sử dụng lệnh forge script của Foundry với:
- Testnet (BSC Chapel) — Được kích hoạt thủ công, sử dụng ví dành riêng cho người triển khai.
- Mainnet (BSC) — Yêu cầu gửi thủ công cộng với cổng phê duyệt môi trường.
Quản lý môi trường
GitHub Môi trường có triển khai nhạy cảm với cổng quy tắc bảo vệ:
- testnet — Không cần phê duyệt, tất cả người bảo trì đều có thể truy cập.
- mainnet — Cần có sự phê duyệt của ít nhất một người đánh giá được chỉ định.
- sản xuất — Việc triển khai sản xuất phụ trợ cần có sự phê duyệt.
Mỗi môi trường lưu trữ bộ bí mật riêng (RPC URLs, khóa của người triển khai, mã thông báo API) tách biệt với các môi trường khác. Bí mật được đưa vào quy trình công việc trong thời gian chạy và không bao giờ tồn tại trong các tạo phẩm hoặc nhật ký.