游戏全球研发管线架构设计 孙艺平蓝盾平台技术负责人 腾讯蓝鲸DevOps平台技术负责人,2016年底加入腾讯,担任蓝鲸作业平台、蓝盾等产品技术负责人。目前专注于CI流水线调度引擎及服务场景设计研发、负责蓝盾在腾讯游戏全球研发管线架构设计和落地、为腾讯业务出海和海外游戏业务的DevOps转型赋能。 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Content 目录 腾讯CI的研发背景 01 什么是研发管线 腾讯CI(蓝盾)的起源及面临新的研发挑战 02 蓝盾DevOps平台架构设计 蓝盾平台整体架构设计持续集成核心部件设计 03 游戏全球研发管线架构设计 助力游戏工业化-全球研发管线架构设计走出腾讯-游戏离岸开发 蓝盾桌面-云研发实践演示 01 腾讯CI的研发背景 腾讯CI(蓝盾)的起源和面临新的全球研发挑战 冯·诺依曼计算机架构=输入设备+CPU(运算器+控制器)+存储器+输出设备 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 InputDevice 输入设备 MemoryUnit 存储器 CPU LogicUnit 运算器 ControlUnit 控制器 OutputDevice 输出设备 什么是研发管线 制品库 持续集成(流水线) 输入设备+CPU(控制器+运算器)+存储器+输出设备 原材料 开发 需求&缺陷 美术代码库 试环境 美术资源 测试运营配置 策划 需求 PM 代码编译 编译加速 Docker镜像 代码分析 资源渲染 二进制文件 制品分析 APK加固 Maven 企业签名 分发&部署 NPM More… Pypi 研发管线 运营 开发测试部署 开发环境 测试环境 生产环境 服务端 CVM Pod 客户端 手机端 GCloud CDN 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 蓝盾平台技术建设背景 2020~ 2022~ 05 共建全球研发模式 本土游戏大量出海、海外工作室需求、外包离岸研发,数据的跨境流通研效提升 2019~ 开源助力行业DevOps转型 04蓝盾代码在Github开源,拉通蓝盾研发流程, 社区独立部署版助力各行业DevOps转型 2012~2017 2018 02 助力腾讯集团业务研效 03推出多语言插件开发体系和研发商店,成立腾讯CI。 增强构建机资源协同,成为各BG的研效平台底座。 蓝鲸DevOps平台(蓝盾)上线 推出蓝盾以全新流水线引擎及PaaS化架构和工业化设计,取代了IEGSODA平台,口碑影响力到全集团 01蓝鲸成为IEG运维自动化支撑体系 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 易用性 稳定性 扩展性 业界开源解决方案存在的痛点 早期使用开源解决方案在腾讯大规模落地实践总结 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 腾讯内既有开发代码编译构 建,美术资源的烘培,还有测试的7*24的测试运行计划,更有产品运营随时对线上的 业务玩法进行下发策略调整。 业界开源方案基本上以代码 库绑定的流水线设计,大多只支持单层编排,UI能力不足对非技术人员不友好,无法满足腾讯不同岗位人员的 业务需求。 在面对大游戏项目多达数百 G大小的美术资源需要经过数十小时长时间的烘培构建,和来自研效实践的百G代码大仓团队的高并发提交构建,一个可定制和稳定的构建调 度平台非常重要。 业界开源方案大多并未考虑 大规模构建场景的平台高可用,难以兼顾复杂多变的环 境。 业界开源方案在流水线的扩 展/插件的实现上大多是指定了某一个语言为其开发语言,这会增加不同技术栈的系统 对接成本。 腾讯是一个开发语言百花齐 放、技术栈复杂的公司,不会以某种开发语言为绝对主导,因此承担打通系统间壁垒的插件开发需要兼顾不同团队的技术栈,提供尽可能 多的开发语言选择。 蓝盾开源为行业DevOps转型赋能 蓝盾开源并一直在为各行各业输出更适合中国企业的DevOps平台 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 注:以上数据从社区渠道收集统计,可能不完整,图标随机摆放也不代表任何排序。 合作公司 投后公司 医疗 电力 航空 汽车 保险 证券 银行 云计算服务 金通网数 融讯络字 科社游媒 技交戏体 腾讯游戏业务遍布全球 工作室本部+离岸研发基地 后疫情时代催生出新型的离岸基地研发模式, 对离岸基地的研发团队急需安全且效率的联合研发方案 海外子公司全球研发 区别于国内较为稳定集中的网络环境,海外 子公司项目团队存在跨国跨洋跨大洲在全球离散分布,需要进行DevOps转型 游戏全球研发新模式 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 国内工作室+海外发行 国内研发构建交付产品到海外发行频率越来越高,需要从研发流水线直接打通到海外各大渠道发行最后一环,消除通过人工操作工作量和保障产品安全 02 蓝盾DevOps平台架构设计 蓝盾平台整体架构设计持续集成核心部件设计 蓝盾DevOps平台整体架构 统一服务网关 (基础访问鉴权/服务请求路由/调用链追踪/限流降级) 蓝鲸统一登录 蓝盾桌面(云研发) 蓝盾手机APP 蓝盾Web站点 蓝鲸APIGateway 配套系统 核心业务SaaS后台 …… 制品库 代码分析 编译加速 质量红线 流水线 蓝鲸权限中心 公共服务 权限管理 蓝鲸编译加速 全球节点分发 工具&规则管理 分析任务调度 云开发服务RemoteDev 流水线引擎服务Engine 项目管理研发商店凭证管理代码库管理 持续集成平台 代码分析平台 制品库平台 构建机资源调度服务 日环 志境 服管构建机 务理DevopsAgent 元数据管理 资源调度服务(编译机&非编译&开发机资源) 构建执行器Worker a代码缺陷跟踪 通用存储管理 代码分析PreCI 云开发机 DevopsRemoting 蓝鲸监控平台蓝鲸作业平台 蓝鲸配置平台蓝鲸计算平台 IaaS依赖 构建机集群&云开发资源 MySQLMQ RedisES CFSCOS MongoDB 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 平台核心-流水线引擎&资源调度服务 流水线扩展 插件框架 通知订阅 回调事件 流程监控 度量上报 队列管理 流水线流程控制器核心 Task执行控制器 Job控制器 Stage控制器 执行触发器 流 队列管理 回调事件 水 排 线编 引队 擎列 服 务 限流配额队列 资 源 非编译资源调度器 构建机调度器 调 度 Windows云桌面 Docker&K8S云开发资源 公共构建资源 MacOS构建机 Linux构建机 Windows构建机 服 务 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Trigger 声明式流水线,动态改变流程 JobContext StageControl StageContext StageFastKill快速失败中断检查 ConditionSkip条件执行检查 StageReview人工审核检查 JobDispatchJob调度 FinalStageTryFinal扩展 JobControl JobMatrix构建矩阵分裂器 JobX JobY TaskDispatch插件执行调度 ..… Job构建矩阵裂变 内循环提高效率 ConditionSkip条件执行检查 Pause 任务暂停检查 TaskControl 后台插件任务动静拆分,提高线程利用率,后台无损发布变更 MutexGroup 互斥组锁定检查 DependOn 前置依赖检查 TaskService任务解耦拆分控制 TaskStart任务下发执行 TaskTryFinish任务执行状态监控 流水线引擎控制器部件𝑆𝑡𝑎𝑔�+𝐽𝑜�+𝑇𝑎𝑠�=𝑃/𝑝𝑒𝑙/𝑛� 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Job控制器 控制器调度并发保护设计 JobMatrix构建矩阵分裂器 Stage控制器 JobZ JobAJobBJob… 矩阵分裂并发队列 ✅分裂失控保护 ✅用户自主配置 流水线Job并发队列【硬限制】 ✅限制流水线复杂度 ✅平台整体配置 任务分配/节点流转 Task控制器 平台构建资源配额降级队列【兜底】 ✅平台突发流量保护 ✅策略:告警/等待/拒绝/升降配 加载插件执行插件结果上报 任务领取/执行/监控/上报 构建执行器Worker 构建机DevopsAgent 资源调度服务 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 插件框架-跨平台团队协同框架设计 …… Shell 内置基础插件 通用调度框架 插件框架 流水线扩展插件 GolangPluginSDK JavaPluginSDK NodejsPluginSDK PythonPluginSDK 开放式流水线插件框架和开发规范: •插件与流水线平台和构建环境完全解耦 •开发者可独立完成插件制作及上架流程 •打通了腾讯内部几百个研效工具平台 私有构建机调度服务 无编译环境资源调度服务 开放式调度服务平台框架 非编译环境关机 非编译环境启动 通用构建机关机 通用构建机启动 核心调度插件 DevCloud公共构建集群调度服务 Windows 构建集群调度服务 •跨BG团队协同研发差异调度 腾讯代码分析扫描集群调度服务 •业务团队可声明指定专属集群 •调度数万台私有构建机集群 Stream公共构建集群调度服务 MacOS公共构建集群调度服务 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 插件平台化运营-在线调试及自助上架 支持4门开发语言的插件SDKDemo工程 初始化插件git仓库 3.gitclone 多语言SDK示例工程降低开发门槛 4.gitpush 1.新建 插件开发者 9.调试插件 9.下载插件包 调试与生产环境一致 2.创建插件库 统一管理插件 10.正式发布 5.上架测试 8.元数据上报 插件仓库 插件包版本管理 插件市场服务 6.启动编译部署7.调度8.上传插件包 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 屏蔽发布细节 规范发布流程 流水线服务 插件编译集群 插件使用者 1.执行构建 流水线服务 2.校验插件合法性 3.缓存本次构建鉴权信息 插件市场服务 4.下发构建及插件任务信息 鉴权缓存 6.匹配本次缓存构建鉴权信息 防止构建机提交伪造构建关键信息 9.包校验 构建机 5.获取插件包 7.封装指向真正的插件存储仓库 构建网关插件仓库 8.插件包下载 流水线插件防伪造越权-云端鉴权 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 03 游戏全球研发管线架构设计 助力游戏工业化-全球研发管线架构设计走出腾讯-游戏离岸研发 蓝盾桌面-云研发实践演示 代码落地泄露隐患&环境标准化 国内工作室离岸基地团队海外工作室 P4代码库 研发数据和制品跨境流通风险 构建机集群 流水线 海外工作室自建构建集群 制品库 全球研发面临新挑战 CVMPod 本土业务集群 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 CVMPod 海外业务集群 冯·诺依曼架构 ❌ 指令与数据互相影响 CPU 数据存储器 哈佛架构 ✅指令与数据分离 ControlUnit 控制器 LogicUnit 运算器 CPU ControlUnit 控制器 LogicUnit 运算器 ✅数据存储独立闭环 InputDevice 输入设备 OutputDevice 输出设备 蓝盾全球研发管线架构设计-指导思想 2023DevOps国际峰会暨BizDevOps企业峰会·北京站