feat: release v0.28.1 mixed API and generic project workspaces

This commit is contained in:
2026-09-30 00:20:17 +08:00
parent 1052f156bd
commit 0d2c6040e2
16 changed files with 716 additions and 66 deletions

View File

@@ -0,0 +1,39 @@
# API 与通用工程混合工作区
本例只定义生成工程的类型与目录,不包含业务模型、外部服务或特定调度方式。使用 v0.28.1-preview 或更新版本 CLI。
下面从一个空目录创建两个独立 Go module;API 工程来自 API 模板,通用工程默认不监听端口。
```sh
go install git.yuntuo.hk/k2safe/go-omni/cmd/go-omni@v0.28.1-preview
mkdir mixed-demo
cd mixed-demo
go-omni api new apps/interface --module example.com/interface
go-omni project new apps/program --module example.com/program
```
将本目录的 `omni.workspace.json` 复制到 `mixed-demo` 根目录,然后执行:
```sh
go-omni workspace format # 格式化 API 契约;通用工程显示 SKIP
go-omni workspace generate
go-omni workspace check
```
也可以省略两个 `kind`:CLI 根据各工程的生成清单识别。显式声明与清单冲突会报错;不会根据目录名称猜测类型。
Go 多模块编译由 Go 工具链独立管理:
```sh
(cd apps/interface && go mod tidy)
(cd apps/program && go mod tidy)
go work init ./apps/interface ./apps/program
go test ./apps/interface/... ./apps/program/...
go build ./apps/interface/... ./apps/program/...
```
workspace check 不修改 `go.work`、`go.mod`、`go.sum` 或项目源文件;不启动应用。若显式配置了共享错误目录提供方,仍会按既有约定构建并调用该 Go 导出函数,见 [目录导出规则](../../DEVELOPMENT.md#同一份-go-错误目录供多个服务生成)。
手工修改任一生成的 `main.go` 后,workspace check 会报告对应工程失败并返回非零退出码;两个工程都存在问题时,会汇总报告。workspace generate 先预检所有工程,再进行各自的文件事务;一个预检失败时,其他工程也不写入。不承诺多个模块之间的崩溃事务性。
本例命令与 `go.work` 编译流程由 `cmd/go-omni/TestMixedWorkspaceConsumer` 在本地和远程发布验收中执行。