Skip to content

Repository files navigation

Ora Cloud

阶段一实现:Go/Gin cloud 核心、PostgreSQL 权威持久化、内部认证和有限控制契约,以及使用真实 HTTP、PG、磁盘和 Git 的模拟执行组件。此仓库尚未完成 Rust Controller/Workspace Node 拆分、Desktop 重构或 Kubernetes 部署。

需要 Go 1.27.1、Git、PostgreSQL 17 和可选的 Task。数据库通过 GORM 初始化并注入,事务层执行参数化 PostgreSQL SQL;没有全局 DB、SQLite/MySQL 示例用户 CRUD,也没有生产启动 AutoMigrate。

本地验证

Windows 可在项目 .local/ 隔离安装并启动 PostgreSQL 17.11,不创建系统服务:

./scripts/postgres.ps1 start
$env:TEST_DATABASE_URL='host=127.0.0.1 port=55432 user=postgres dbname=ora_test sslmode=disable'
task check

脚本仅监听 127.0.0.1:55432,使用本地测试 trust 认证。二进制来自 EDB PostgreSQL Windows 分发,固定版本和 SHA256。停止用 ./scripts/postgres.ps1 stop,数据保留。

也可使用 Docker:

docker compose up -d --wait
export TEST_DATABASE_URL='host=127.0.0.1 port=55432 user=ora password=ora-local dbname=ora sslmode=disable'
task check
task test:race

测试为每个用例建立独立 PG schema 并自动清理,测试账号需要 CREATE SCHEMA 权限。task check/test/test:integration/test:race 会设置 REQUIRE_POSTGRES=1;缺少真实 PG 配置会失败,不能静默跳过。直接 go test ./... 未配置 PG 时会显式跳过 integration,用 task test:unit 可单独运行非 PG 测试。

Windows race 需要可用 C 编译器:

$env:CC='D:\tmp\ora-cloud-test-tools\llvm-mingw-20260908-ucrt-x86_64\bin\x86_64-w64-mingw32-gcc.exe'
$env:PATH=(Split-Path $env:CC)+';'+$env:PATH
task test:race

该路径是本次验证使用的隔离工具目录,其他机器设置自己的 MinGW/LLVM-MinGW CC 即可。Linux CI 使用系统 C 编译器。

运行

配置文件默认 configs/config.yaml,所有已有配置项可由 CLOUD_ 环境变量覆盖,如 CLOUD_DATABASE_DSN。生产数据库使用 TLS、独立 DML 账号和部署迁移账号;不要使用示例本地 trust 配置。

# 默认示例指向上面的本地 ora_test;真实部署请指定 -config。
go run ./cmd/cloudctl -command migrate
go run ./cmd/cloudctl -command bootstrap -name '研发组织' -source 'huawei-corp' -subject 'stable-account-id' -display-name '首位管理员'
go run ./cmd/cloudctl -command credential-ref -tenant '<tenant UUID>' -owner '<user UUID>' -secret-ref 'infra-secret://git/team/account'

bootstrap 原子创建租户与首位管理员,是部署操作;重复执行会新建租户。credential-ref 只保存基础设施引用,不接收 Git 密钥值;引用受 tenant+owner 外键约束。普通成员须先经有效 gateway 身份访问 /api/v1/me 建立 user,再由管理员通过成员 API 显式添加。没有自助组织注册或外部组自动授权。

生产启动前在配置中设置内部验证公钥,见 认证配置与凭据。空 trust 配置会启动失败:

go run ./cmd/server -config /path/to/config.yaml

server 只检查已执行迁移及 checksum,不执行 DDL;数据库、迁移、trust 或监听失败会非零退出。GET /healthz 检查 PG 可达性。

可直接运行完整创建演示(独立生成短期模拟签名密钥,仅限进程内测试):

go run ./cmd/cloudctl -command migrate
go run ./cmd/simulator

演示启动独立 loopback HTTP cloud/Substrate,创建测试租户、bare repo、main linked worktree、模拟 sandbox 和 Node,再输出 Ready Workspace。磁盘在 .local/demo/,PG 记录保留;再次运行创建新的演示租户。模拟器没有生产基础设施凭据,不部署 Kubernetes,不启动真实 Agent/Deno。

契约与边界

模块架构与分层文档

每个子系统、服务命令与工具均遵循与 Ora 桌面端同等严谨的架构设计,并配备独立的模块级规范文档:

阶段一采用数据库事务级全局 advisory lock 串行核心事务,并限制每 Project 一个未完成 operation。HTTP/Git/Substrate 调用从不持有数据库事务。此选择适用于首版单集群单活,牺牲写吞吐以降低并发不变量复杂度;后续可按租户/Project 细分锁,但必须保持现有并发测试。

容器只打包 server/cloudctl,运行身份为非 root。构建用 docker build -f scripts/Dockerfile -t ora-cloud:phase-one .,挂载自有配置和公钥;迁移使用同镜像 --entrypoint /app/cloudctl 独立执行。仓库 CI 使用 PG service、格式/静态检查和 race 集成测试。Docker 镜像和真实部署不属于本地已验证结果。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages