软件开发流程
说明
- 每个项目的配置模版都只有一套,然后开发、测试、生产的各自有独立配置内容
开发阶段
开发负责,运维配置合并卡点
目标
开发者验证自己开发功能,确保功能没有问题,能够正常打包。
环境
本机、开发机器基于源代码部署。
部署方案
开发者更新并维护代码库中的README.md,其他开发者通过参考详细描述能够进行部署。
配置
开发者需要提供启动需要的最小配置详细说明。
打包
包文件的名称格式为: 模块名称-YYYYMMDD-HHMMSS-最近一次提交的简短hash值.tar.gz
包名称中的字母全部为小写字母,模块名称可能包含-符号。
日期固定为8位,时间使用24小时方式表示,整体表示打包的时间。
最近一次提交的简单hash值通常为7位。
名称举例:
webdav-20260203-153412-8a54401.tar.gz
yeying-agent-20260203-153412-8a54401.tar.gz
开发者提供打包的脚本(scripts/package.sh, 具体请参考webdav/scripts/package.sh)或者方法。
流水
由运维配置代码合并的编译卡点,,确保提交的代码在合并前能够编译通过。
测试阶段
开发为主,运维负责自动化
目标
基于项目的main分支,通过定时任务检测main分支是否有代码更新,确保环境始终都是main分支最新的代码,方便验证最新功能。
检查main分支是否发生变化的通用脚本统一放在deployer/scripts目录下。
环境
测试环境,会配置测试域名,测试域名的命名规则如下:test-<project name>.yeying.pub
部署方案
运维根据项目的READM.md提供两个脚本:打包脚本和升级脚本,并将脚本存放在<project name>/scripts目录下。

配置
开发者提供测试环境的配置信息
升级
在项目的docs里面维护versions.md文件,记录升级的影响,特别是在升级过程中需要手动介入的地方,可能的影响如下:
- 数据库变更(增加表、添加字段、修改字段类型以及插入默认数据等等)
- 配置变更(增加新配置、修改配置名称等)。
运维来更新和维护 测试阶段环境的部署信息汇总记录: 产品部署
生产部署
由运维同学负责
环境
生产环境,配置生产域名
部署方案
基于deployer部署,以容器化为主。部分情况下可以先非容器,然后改造升级成容器话部署。
社区产品统一放到deployer/product/<your project name>
配置
运维管理生产环境的配置
流水
由运维配置Github打包流水线和创建镜像。
升级
生产环境的升级通常是需要手动介入,基于测试环境升级验证的结果,通过评估后进行的操作。尽管如此,生产环境的升级也应该通过脚本或者常规命令(如果容器的常规操作命令)进行,避免人工更改配置的操作。