Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

System 示例:多模块系统

这里给出一个和当前实现一致的最小示例流程,用来说明 System 如何组合多个模块。

1. 创建模块

gops mod new --name gateway
gops mod new --name user-service
gops mod new --name postgres

2. 创建系统

gops sys new --name microservice-stack
cd microservice-stack

3. 维护系统模块列表

在 sys/mod_list.yml 中把需要的模块加入系统。

4. 初始化系统设置(可选)

gops sys setting --init

5. 解析变量并本地化

gops sys update      # 解析变量 -> sys/merged_vars.yml,并生成 values/sys_value.yml(注释模板)
gops sys localize    # 生成 .env(默认先解析变量,等价于先 update)

如果只想处理某个模块:

gops sys localize --mod gateway

值文件采用“只写差异”的风格:

# values/sys_value.yml —— 整份默认是注释,取消注释即覆盖
HTTP_PORT: 8081

也可以在同目录放 values/value.yml 作为额外覆盖层(优先级最高,适合入库的客户覆盖)。

6. 打包交付

gops sys package     # -> ../microservice-stack-<version>.tar.gz

7. 在运维项目中使用(客户差异)

cd ..
gops prj new --name customer-a
cd customer-a
gops prj import --path ../microservice-stack-0.1.0.tar.gz
cd microservice-stack
gops sys localize    # 值取自 <project>/values/microservice-stack/

8. 执行系统操作

gops run download --env default
gops run install --env default
gops run start --env default
gops run status --env default

说明

这个示例强调的是当前实现中的责任边界:

  • 模块定义在 gops mod
  • 系统组合在 gops sys
  • 客户导入和交付在 gops prj