2024.09.23
Narrate
今天骑车电动车30分整到公司
ToDo
Knowledge
-
python signal
-
python branch, revision, *_ = PUSH_VERSION.split(“@”)
-
cmake
工作内容
阅读服务端整合部署代码
看了测试服务器的部署
外网服务器推送还在看
编译错误查看
-
-lzstd 编译参数无法解析
接入了 Zstd 第三方字典压缩,但是没有接入第三方编译支持库,导致编译报错
-
以及一些其他的构建问题,只是了解了一下,没有彻底解决
服务器 GameShared 问题分析
梳理了一下 服务器gameshared的流程
https://kdocs.cn/l/ch1ogWMRO2bx
问题描述
版本构建流水线 构建出来的 MechaSerer 服务器中 libGameShared 文件存在过时问题,导致服务器拉起失败,替换对应版本的文件至服务器,服务器恢复正常
问题定位
libGameShared 简称为 shared
shared文件在版本构建时的流转方式:MechaServer构建流水线 编译出 shared 上传 svn 代码仓库,room server 构建 拉取仓库的 shared 直接用,然后服务器部署时一起用于 roomserver 和 mechaserver。
在构建文件 MechaSvr_Build.py 中第 777 行 定义了 MechaServer 的三种构建方式
据表知,版本构建并不会编译新的 shared 文件,room server 中 所用的 shared 文件只依赖于 代码提交触发编译
| 模式 | 场景 | 构建目标 |
|---|---|---|
| gameshared | Win所有客户端构建流水线 中会触发编译提交(如果没有对版本的shared文件) | 只构建gameshared |
| check_build | MechaServer提交触发编译流水线 会触发编译提交 | 构建gameshared;构建server; |
| build_version | 版本构建流水线 触发MechaServer服务器构建 | 只构建server |
所以导致两个问题:
-
代码提交编译排队过长,版本构建没等到对应版本的 shared 文件,拉取了过时的 shared
-
代码提交编译非常顺利,roomserver版本构建更慢(比如重试流水线、前置流程时间长了些),最终构建成功的版本拉取了超前的未来版 shared
两个问题都会导致 shared 文件和版本构建的 表头数据结构不一致,可能落后了,可能超前了。
解决方案
版本构建时 MechaServer构建流水线 也同时编译 gameshared 文件 (build_version 模式)
RoomServer 构建时等待MechaServer的编译结果,将 MechaServer 编译出来的 gameshared 文件直接用于版本构建,保证版本匹配。
实施
24.9.25 实施情况如下:
/data/autobuild/trunk/release/server/linux/545208 目录是 MechaServer 编译构建上传的
下面的server_release_545208_I/RoomServer_Data/Plugins 目录下的shared文件是 roomsvr 产物压缩包内的文件。
两者的 md5 数值一致,保证了版本匹配。
待办
-
gc 编译开关
-
部署和渠道相关流程
这周会了解完,目前zilve比较忙,我先帮着做点需求,以及自己先看构建脚本相关的流程逻辑。
-
服务器gameshared方案,如果评估没问题再开搞