ScrumGathering大型企业CI平台建设和实施分享腾讯陈小光课件

上传人:痛*** 文档编号:132006231 上传时间:2022-08-07 格式:PPT 页数:22 大小:1.90MB
返回 下载 相关 举报
ScrumGathering大型企业CI平台建设和实施分享腾讯陈小光课件_第1页
第1页 / 共22页
ScrumGathering大型企业CI平台建设和实施分享腾讯陈小光课件_第2页
第2页 / 共22页
ScrumGathering大型企业CI平台建设和实施分享腾讯陈小光课件_第3页
第3页 / 共22页
点击查看更多>>
资源描述
大型企业CI平台建设和实施分享腾讯 陈小光Agendan现状&挑战n实践分享-平台建设n实践分享-实施推广n总结nQ&Au 7年研发管理和优化经验,跨越银行、互联网等行业u 目前腾讯持续交付、持续集成实践者u 爱好广泛包括且不限敏捷实践,音乐,数学u 微博 v陈小光v u Mail 现状&挑战-现状l工程师500l同时进行的项目20l开发语言覆盖c,c+,php,java,以及手机平台等l项目之间依赖复杂,涉及到多层循环现状&挑战-挑战-平台l同时存在CI平台五套,各自为政,平台不一,资源浪费,是否要整合?l当项目代码量超过百万时,如何提升构建效率?如何管理复杂构建依赖?lCI集群30台,如何能及时有效的更新工具和软件以及配置到相关环境里面?l如何保证从开发-测试-上线三个步骤的源码和二进制包版本一致性?l如果处理来自不同团队的对CI平台的需求?现状&挑战-挑战-实施lBU老大们对CI理解不一,如何获取他们的支持?l开发对持续构建的失败漠不关心怎么办?l如何让不到五人的CI团队,高满意度的支持大于五百人团队实施CI?l如何提高开发编写单元测试的积极性?l底层代码随意变更提交,影响到上层代码怎么办?解决方案-平台-设计思想l平台设计思想:统一平台和运维,减少维护成本和机器资源,成果共享环境保证绝对权威,跟线上、测试、开发保持一致提升易用性,减少用户学习成本统一测试和上线的包出口l工具尽量使用开源JenkinsSubversionTestlink解决方案-平台-拓扑结构解决方案-平台-高效构建系统l 基于开源基于开源scons自研的一套分布式统一构建系统自研的一套分布式统一构建系统支持c+,java,probuf,swig等多种语言代码变更后可以自动分析依赖关系集构建,测试,静态代码检查,高亮错误显示等功能支持增量和分布式编译和测试l 解决了构建效率解决了构建效率和依赖管理问题l其他提升构建速度方法其他提升构建速度方法:使用tmpfs,IO效率基本为0,需要大内存机器 使用cache机制,比如ccache 分布式编译,比如distcc 源码分层:抽离基础库代码专人维护,包括common和thirdparty解决方案-构建分级构建类型lNightlyBuild:夜间,全量测试和构建,重建cachelCheckInBuild:CheckInSvn,增量ut,增量构建,基于cachelHandleBuild:按需,全量构建和测试,为了打包解决方案-平台-统一接入脚本概述:统一某种类型的项目或代码的公共动作(比如编译,执行ut,静态检查,包上传等)到一个脚本或工具里面,用户只需要输入路径配置即可完成CI的配置,减少用户学习和使用成本。C+:写好脚本ci_exec compile_dir=$dir1 ut_dir=$dir2 st_dir=$dir3Java(ant为例):解决方案-平台-统一环境管理-puppet管理环境使用puppet做构建环境统一管理更新管理如下配置:lHosts配置l构建脚本l构建软件lSlave初始化脚本Slave上puppet初始化用rpm包实现。SubversionPuppetmasterPuppetslave1Puppetslave1WorkSpaceCheckIn亦可通过CI本身功能来管理环境Jenkins提供多Slave配置功能解决方案-平台-统一环境管理-Jenkins管理环节通过Jenkins本身管理构建环境,slave正在以后即可做。通过Jenkins多Slave配置完成:l规划好SVN里面目录Conf bin等l在Slave机器上配置bin目录到$PATH n优点:l使用方便,测试通过以后直接提交到SVN即可更新lJenkins直接辐射到各个Slave,更新方便n缺点:l没有整体视图SubversionJenkinsmasterJenkinsslave1Jenkinsslave1修改工作区CheckIn解决方案-平台-presubmit方案-client模式Dev工作区SubversionCheckSvnServiceUpload.py专用提交脚本专用提交脚本Check.py检查:提交的注释里面是否有指定加密串通知:通过对应人Upload.py:1.检查是否被模块owner Codereview且被Approved2.在内存文件系统tmpfs中快速run编译和ut3.做CodeStyle检查以及静态检查4.成功则自动提交,在注视里面加标记5.失败给予提示upload.py i 33896 I 后为codereview id目的:把问题扼杀在提交到代码库之前,减少影响Dev工作区SourceControlSystemCheckSvnServicepresubmit.py脚本脚本检查、信息搜集、打diff、上传Check.py检查:提交的注释是否有指定加密串通知:通过对应人两种Presubmit模式-Client/Server模式Presubmit服务器验证、提交解决方案-平台-包服务器媒介包服务器CITestRelIDCTest1234包服务器两分支lTest:用来存放从CI发过来的包,待测试lRel:用来存放从已测的包,待发布包服务器跟电子流串通1CI里面执行手工打包,到包服务器test分支2测试从包服务器取包部署测试测试环境3得到测试通过信号后,被测通过的包自动转到rel分支4发布系统从rel分支拉取测通过的包上线解决方案-平台-报表平台jenkins构建的报表平台保存如下数据l构建成功率l构建时长l测试覆盖率l接入率等有开源插件可支持数据报表展现!有开源插件可支持数据报表展现!解决方案-实施-先试点l试点项目选择:交付压力小的重点项目成立联合虚拟项目组运作做好评估:缺陷率,代码质量等l试点目标目标:摸索经验平台建立树立标杆建立影响透明效果取得重视解决方案-实施-制度化l接口人制度:1.需要实施CI部门指定接口人2.每个部门对应CI实施责任人3.对CI实施接口人进行traininglCI平台需求管理流程:1.把CI平台当做“产品”来做2.明确需求管理流程3.排期实现,可视化进度l沉淀制度1.把CI实施框架和FAQ沉淀到wiki2.每周专人值班辅助接口人3.常见问题沉淀到wikin合作,而非推广解决方案-实施-可视化l周报:部门周报l月报:整个事业部周报l显示器:质量情况,放置门口总结l平台平台总体架构总体架构:统一平台,包服务器,统一出口构建平台构建平台:构建平台,管理依赖,支持分布,增量编译公用脚本公用脚本:封装复杂操作,减少dev学习和使用成本环境管理环境管理:puppet,利用CI平台管理构建环境Presubmit机制机制:presubmit,codereview确保质量l实施实施试点先行试点先行:摸索经验,建立平台,树立标杆,扩大影响推广策略推广策略:沉淀wiki,职责明确,值班制度,合作态度报告和奖励机制报告和奖励机制:数据可视化Q&A
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!