Skip to content

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.json

Xâ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 build xây dựng tất cả các gói theo thứ tự phụ thuộc.
  • turbo run test chạ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.json với các mối quan hệ dependsOn rõ ràng, đảm bảo packages/* được xây dựng trước apps/*.

Đườ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

WorkflowTriggerAction
contracts-buildPR tới chínhSoạn thảo hợp đồng, chạy phân tích tĩnh
contracts-testPR tới chínhChạy bộ thử nghiệm Foundry (PR)
contracts-deploy-testnetGửi thủ côngTriển khai tới BSC Chapel thông qua tập lệnh Foundry
contracts-deploy-mainnetGửi thủ công + phê duyệtTriể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ụ

WorkflowTriggerAction
services-buildPR tới chínhXây dựng nhị phân Go, lint
services-testPR tới chínhBộ thử nghiệm Run Go với trình phát hiện chủng tộc
services-deployĐẩy vào chínhXâ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

WorkflowTriggerAction
apps-buildPR tới chínhXây dựng tất cả các ứng dụng giao diện người dùng
apps-deployĐẩy vào chínhTriển khai lên các trang Cloudflare

Quy trình làm việc của đồ thị con

WorkflowTriggerAction
subgraph-buildPR tới chínhBiên dịch ánh xạ AssemblyScript
subgraph-deployĐẩy vào chínhTriể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

WorkflowTriggerAction
deploy-docs-testĐẩy vào chínhTự động triển khai tài liệu cho môi trường thử nghiệm
deploy-docs-liveGửi thủ côngTriể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ý.