—陪伴您的运维生涯高效运维社区·陪伴您的运维生涯京东App持续集成实践分享潘晓明@京东高效运维社区·陪伴您的运维生涯目录持续集成在京东的发展历程1京东持续集成服务设计解决的痛点2持续集成在京东的价值体现3高效运维社区·陪伴您的运维生涯传统瀑布流程需求设计开发测试发布高效运维社区·陪伴您的运维生涯测试团队各自为战模块1模块2测试团队1测试团队2高效运维社区·陪伴您的运维生涯带来的问题•开发编译失败了,测试只能干等着•新发现的bug,到底是哪个测试包引出的•测试自己本地打包测试,熟悉成本太高•模块1测试完成了,模块2还没提测•其他各种问题高效运维社区·陪伴您的运维生涯期待的改变•是否能够通过持续集成统一出日常提测包•是否能够通过持续集成统一出集成回归包•是否能够通过持续集成追溯问题•是否能够通过持续集成出特定的测试包•更多的需求介入高效运维社区·陪伴您的运维生涯团队的成立成立一个持续集成团队势在必行高效运维社区·陪伴您的运维生涯目录持续集成在京东的发展历程1京东持续集成服务设计解决的痛点2持续集成在京东的价值体现3高效运维社区·陪伴您的运维生涯最初的设计暴露的问题•持续集成环境没有备份容灾•没有统一的入口•手动部署环境•缺乏有效的配置管理•未关联测试工作•无法满足敏捷项目的需求高效运维社区·陪伴您的运维生涯优化措施•现有的设计•我们做了哪些改进高效运维社区·陪伴您的运维生涯京东持续集成平台架构图高效运维社区·陪伴您的运维生涯京东持续集成系统后台服务架构节点注册服务网关Jenkins基础服务JenkinsJob服务UI自动化服务节点列表节点信息.....复制job删除job执行用例获取用例..........高效运维社区·陪伴您的运维生涯容灾性AndroidJenkins1廊坊Android.ci.m.jd.com•保证持续集成服务7*24不间断提供服务•跨机房保证极端情况服务仍可用•负载均衡平台微服务Jenkins容器数据库AndroidJenkins1马驹桥高效运维社区·陪伴您的运维生涯持续集成平台关于统一平台,我们需要什么样的平台?高效运维社区·陪伴您的运维生涯京东持续集成平台--构建页面高效运维社区·陪伴您的运维生涯京东持续集成平台--构建历史页面在这里找到你要的测试包高效运维社区·陪伴您的运维生涯京东持续集成平台--构建统计页面高效运维社区·陪伴您的运维生涯京东持续集成平台--配置管理页面高效运维社区·陪伴您的运维生涯统一入口统一性•集中化所有项目•集中化所有构建类型可用性•注册,配置,构建,产出的操作简化•具体内部实现对用户黑盒信息化•所有构建信息直观展示•数据闭环高效运维社区·陪伴您的运维生涯节点管理•备份容灾•环境快速部署•方便新项目接入•并发构建支持•统一管理高效运维社区·陪伴您的运维生涯节点监控•节点监控保持在分钟级别的监控粒度•节点掉线第一时间通知到责任人•可以通过短信,微信,邮件等方式通知高效运维社区·陪伴您的运维生涯配置化管理环境配置化Job配置配置化Job参数配置化各种插件/脚本配置化DockerGit高效运维社区·陪伴您的运维生涯自动化部署•配置化管理使得部署完全自动化•配置化管理使得配置能够按照版本部署高效运维社区·陪伴您的运维生涯全平台支持1.iOS支持•Xcode开发环境•个人证书•企业证书2.Android支持•AndroidSDK开发环境•签名key•构建环境Android平台iOSDebug编译类型Release企业包包类型发布包插桩包预发布包高效运维社区·陪伴您的运维生涯参数化构建•Job复用,快速接入新项目•灵活配置,按需产出•节省磁盘空间高效运维社区·陪伴您的运维生涯构建状态实时获取1.开始构建•谁触发的•什么时候触发的•触发的什么项目构建2.构建中3.构建完成•构建成功•构建失败•失败原因•构建时长高效运维社区·陪伴您的运维生涯构建历史信息•获取上次构建的结果•希望追溯过去某个bug的出现或者修复时间•数据分析高效运维社区·陪伴您的运维生涯构建版本差异信息分析bug出现或者修复的重要参考信息!高效运维社区·陪伴您的运维生涯构建日志信息•用于分析构建失败的原因•用于验证相应的配置和参数信息高效运维社区·陪伴您的运维生涯构建数据统计•每周各个平台的构建频次•各个平台的构建成功率•Ci后期维护更新的重要依据高效运维社区·陪伴您的运维生涯新需求接入1.新的项目•平台•构建环境•代码分支2.新的工程•项目•代码分支•Job配置3.新的节点•项目•Job配置高效运维社区·陪伴您的运维生涯多项目支持京东商城京东冰箱京东金融JDReact京东小易京麦高效运维社区·陪伴您的运维生涯测试的介入1.测试准入标准2.单元测试3.UI自动化测试高效运维社区·陪伴您的运维生涯测试的介入测试准入流程•自动或者手动触发构建测试包•构建失败第一时间通告所有相关责任人•失败通告包含代码变更记录,方便定位分析高效运维社区·陪伴您的运维生涯测试的核心要素测试准入标准•构建成功是测试的基本标准•开发不负责任地提交代码导致的构建失败是非常低级的问题•持续集成需要时刻保证项目的输出是可测试的高效运维社区·陪伴您的运维生涯测试的介入单元测试•构建过程执行单元测试用例•单元测试结果通过工具自动生成•使用第三方工具获取单元测试代码覆盖率信息高效运维社区·陪伴您的运维生涯测试的核心要素单元测试•单元测试是最方便与持续集成结合的测试,一定要做•单元测试是测试金字塔的核心测试•单元测试可以从行覆盖率,异常,业务场景等条件去覆盖•用于持续回归测试,第一时间发现代码变更问题高效运维社区·陪伴您的运维生涯持续集成的数据统计构建每日代码提交次数每日构建成功率每日构建花的时间测试代码覆盖率圈复杂度缺陷数量代码风格问题高效运维社区·陪伴您的运维生涯测试的介入UI自动化测试•可在构建前选择执行自动化测试用例•可选择模块用例•多节点分布式执行•支持在线用例的编辑•测试结果数据统计高效运维社区·陪伴您的运维生涯京东敏捷化项目管理迭代1迭代2迭代32周2周高效运维社区·陪伴您的运维生涯触发构建时机手动满足用户特定需要自动敏捷项目基础建设第一时间发现问题提升效率高效运维社区·陪伴您的运维生涯敏捷出包策略MasterIntegrationFeature高效运维社区·陪伴您的运维生涯问题总结持续集成环境没有备份容灾通过多点部署方式容灾没有统一的入口通过建设平台统一入口手动部署环境通过容器和配置管理实现自动部署未关联测试工作关联了单元测试,UI自动化测试缺乏有效的配置管理实现数据全配置化无法满足敏捷项目的需求自动化构建流程高效运维社区·陪伴您的运维生涯目录持续集成在京东的发展历程1京东持续集成服务设计解决的痛点2持续集成在京东的价值体现3高效运维社区·陪伴您的运维生涯带来的效益提升沟通成本时间成本测试效益高效运维社区·陪伴您的运维生涯带来的成果•7*24小时保证服务•支撑了超过100,000的有效构建•每日触发400+条单元测试用例,100+条Ui自动化测试用例,300+条接口自动化测试用例,3,000,000+行代码扫描•成功帮助京东商城大大小小版本按时发版超过15个高效运维社区·陪伴您的运维生涯总结没有最好的持续集成方案,只有最适合自己的高效运维社区·陪伴您的运维生涯答疑Q&A高效运维社区·陪伴您的运维生涯Thanks高效运维社区荣誉出品