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方案,如果评估没问题再开搞