《【毛超】极狐 GitLab 10 年开源研发管理实践.pdf》由会员分享,可在线阅读,更多相关《【毛超】极狐 GitLab 10 年开源研发管理实践.pdf(45页珍藏版)》请在三个皮匠报告上搜索。
1、极极狐狐 G Gi it tL La ab b 1 10 0 年年开开源源研研发发管管理理实实践践毛毛超超研发团队经理极狐 GITLAB 资深后端工程师、研发经理黑帕云科技 前端架构师THOUGHTWORKS 高级咨询师毛毛超超极极狐狐G Gi it tL La ab b 是是一一家家自自主主可可控控、开开放放共共赢赢的的中中国国企企业业遵循中国个人信息保护法和数据安全法,基础设施和数据独立存放于中国境内,不与国外共享立立足足中中国国,联联结结世世界界独家且不可撤销的GitLab品牌和IP授权独立自主研发权中国公司自主管理,独立运营源码开放,任何人都可以访问,并参与贡献技技术术实实力力全全球球
2、领领先先合合资资3 3.0 0模模式式中中国国企企业业灵灵活活自自主主、安安全全可可控控、本本地地化化研研发发服服务务国国内内知知名名投投资资机机构构加加持持研研发发效效能能挑挑战战研研发发效效能能实实践践研研发发效效能能度度量量议议程程软软件件研研发发效效能能权权威威指指南南 研研发发效效能能“黄黄金金三三角角”意意识识到到研研发发效效能能要要提提升升,却却不不知知如如何何下下手手研研发发指指标标太太多多了了,无无法法确确定定核核心心指指标标开开发发工工作作实实在在太太忙忙,没没空空做做研研发发效效能能改改进进研研发发流流程程需需要要大大量量人人工工参参与与,拉拉低低工工作作效效率率研研发发
3、用用到到太太多多工工具具,数数据据过过于于零零散散,无无法法观观测测过过于于关关注注代代码码产产出出,忽忽视视代代码码质质量量,b bu ug g不不断断研研发发效效能能实实施施过过程程中中的的痛痛点点研研发发效效能能核核心心明明确确目目标标优优化化流流程程注注重重质质量量持持续续度度量量0 01 1研研发发效效能能实实践践之之优优化化研研发发流流程程十十年年贡贡献献者者数数量量十十年年开开源源贡贡献献者者的的成成就就十十年年贡贡献献者者提提交交数数开开源源贡贡献献组组织织排排名名开开源源开开放放是是第第一一文文化化研研发发管管理理流流程程迭迭代代管管理理团队采用敏捷开发模式,每个迭代为4周功
4、功能能开开发发开发流程、分支管理开发模式、提交规范需需求求管管理理采用可视化方式管理需求,对需求分配、评估、分类代代码码审审查查极狐GitLab 代码标准,CICD 流水线发发布布管管理理极狐GitLab 自动化部署流程,发布周期管理效效能能度度量量评估团队研发效率和质量,识别问题找到改进机会怎怎么么样样让让社社区区贡贡献献者者快快速速上上手手想想贡贡献献但但不不知知道道找找谁谁领领取取任任务务需需求求忘忘记记打打标标签签,不不知知道道归归属属哪哪个个团团队队代代码码写写完完后后,不不知知道道如如何何合合并并代代码码开开发发任任务务延延期期,没没有有及及时时需需求求更更新新状状态态某某功功能能
5、是是否否已已经经发发布布?哪哪个个版版本本发发布布?社社区区贡贡献献者者:我我太太南南了了在在软软件件研研发发过过程程中中人人是是可可靠靠并并且且不不可可靠靠的的可可追追踪踪的的任任务务迭代计划开发任务合并请求代码审查优优化化流流程程:保保证证有有据据可可查查,减减轻轻人人工工参参与与自自动动化化工工作作流流监控议题分类和内容监控代码合并流程定时提醒完成任务自动生成研发报告文文档档先先行行Document is the context使用多种工具进行文档建设,Handbook,knowledge share,issue等包包罗罗万万象象的的工工作作手手册册监控议题状态,自动提醒团队成员完善信息
6、自自动动化化工工作作流流 监监控控议议题题自自动动化化工工作作流流 监监控控代代码码合合并并监控代码合并流程,自动提醒团队成员进行代码评审自自动动化化工工作作流流 定定时时发发送送提提醒醒定时发送通知,提醒团队成员完成任务自自动动化化工工作作流流 生生成成研研发发报报告告自动生成研发报告,为研发度量打下基础在在研研发发流流程程中中管管理理者者应应在在流流动动性性方方面面重重点点关关注注0 02 2研研发发管管理理实实践践之之注注重重代代码码质质量量保保证证代代码码质质量量的的关关键键实实践践:代代码码质质量量可可靠靠性性可可读读性性可可扩扩展展性性可可维维护护性性运运行行效效率率高高质质量量代
7、代码码的的定定义义在在软软件件吞吞噬噬一一切切的的时时代代,代代码码质质量量就就是是软软件件质质量量的的基基础础。不不仅仅影影响响软软件件运运行行效效率率和和安安全全性性,还还影影响响研研发发团团队队的的生生产产力力。编码规范代码审查持续集成自动化测试覆盖重构开开源源项项目目更更应应注注重重代代码码质质量量不不做做代代码码门门禁禁和和代代码码评评审审代代码码质质量量就就是是由由技技术术水水平平最最低低的的人人决决定定的的提提交交消消息息检检查查subject 小于 72 字符content 每行小于 72 字符changelog 预定义typelink 相关议题连接代代码码规规范范检检查查js
8、 规范json 规范Html 规范ruby 规范css 规范 推推送送前前检检查查配置文件检测文档检测秘钥检测自动修复style问题I18n 翻译检测代代码码门门禁禁:严严格格要要求求,提提前前报报错错0 01 1 完完整整的的上上下下文文包括修改内容介绍,方案思路,关联 issue 等0 02 2 修修改改前前后后的的截截图图一图胜千言,一看就知道你改了什么0 03 3 数数据据库库改改动动数据库 schema diff,数据查询 diff0 04 4 足足够够测测试试覆覆盖盖确保测试覆盖率没有降低0 05 5 成成功功运运行行流流水水线线不能破坏其他逻辑0 06 6 避避免免巨巨量量代代码
9、码改改动动可以拆分成多个合并请求代代码码变变更更的的最最佳佳实实践践 合合并并请请求求gitlab-org.gitlab.io/gitlab-roulette评评审审者者轮轮盘盘 帮帮你你找找寻寻最最合合适适的的评评审审者者角角色色时时区区状状态态当当前前任任务务量量0 01 1完善的介绍,详细的开发任务列表0 02 2可靠的,可阅读的代码0 03 3是否有更简单的解决方法0 04 4是否引入了不必要的外部依赖0 05 5有足够的自动化测试覆盖0 06 6前端、后端、数据库代码审查是否通过0 07 7流水线是否通过0 08 8是否通过安全评审代代码码评评审审核核心心关关注注点点不要下命令,而是
10、问问题(rename 成 user_id 会不会更好一点?)不清楚就发问(我不太明白,能否解释一下这段逻辑?)代码共有,而不是几个人的(不用你的代码,用这段代码)不要用攻击的词语(这段代码太傻了,性能很差)详细清楚的表达,不要含糊其辞(不用这段不好,需要改一下)不要挖苦讽刺(大家快来看呀,这段代码真好,上线之后肯定出名)如如何何心心平平气气和和的的完完成成一一次次代代码码评评审审最少有 1 位评审员批准最少有 1 位安全评审员批准流水线必须成功修复所有代码评审相关问题符合代码推送规则测试覆盖率不能降低最大文件不超过 10 M极极狐狐 G Gi it tL La ab b 合合并并代代码码的的最
11、最低低要要求求9 9 个阶段4 40 00 0+任务2 23 3万万+测试平均运行 1 1 小时极极狐狐 G Gi it tL La ab b 流流水水线线s sy yn nc c:同步代码变更p pr re ep pa ar re e:生成制品为后续任务做准备b bu ui il ld d-i imma ag ge es s:生成 Docker Imagef fi ix xt tu ur re es s:为前端测试准备数据l li in nt t:检查代码规范和静态扫描任务t te es st t:运行测试p po os st t-t te es st t:计算测试覆盖率r re ev vi
12、 ie eww:创建 Review 环境用于测试q qa a:对 review 环境运行 E2E 测试p po os st t-q qa a:生成 review 环境测试运行报告n no ot ti if fy y:若失败则通知团队成员敏感信息扫描静态代码扫描依赖项扫描容器镜像扫描许可证合规扫描集成 Postgres.ai 服务运行数据迁移脚本,验证运行时间、运行结果、可回滚行等利用K8S临时部署整套GitLab 环境,在合并代码之前验证功能检测重点页面代码中CSS选择器是否存在,能够避免昂贵的功能测试因为UI调整的错误D De ev vS Se ec cO Op ps s数数据据迁迁移移脚脚
13、本本验验证证创创建建临临时时验验证证环环境境预预检检测测 U UI I 测测试试除除了了运运行行测测试试,流流水水线线可可以以做做的的更更多多D De ev vS Se ec cO Op ps s,可可以以如如此此简简单单敏感信息检测(密钥扫描)IaC(基础设施及代码)扫描静态应用程序安全测试容器镜像扫描License 合规基于代码覆盖率的模糊测试基于 API 的模糊测试动态应用程序安全测试依赖项扫描P Po os st tg gr re es s.a ai i与机器人对话就可以运行 sql 语句,并能分析运行效率获得相应的改进建议定期脱敏部分 prod 数据,生成测试数据集还可以在合并代码前
14、验证数据迁移脚本的正确性和运行效率管管理理者者应应始始终终追追求求卓卓越越的的工工程程实实践践,这这是是保保证证质质量量的的基基础础0 03 3研研发发管管理理实实践践之之持持续续度度量量研研发发效效能能软软件件项项目目管管理理框框架架角角色色协协作作改改进进文文档档展展示示组组织织关关键键数数据据提提升升团团队队竞竞争争动动力力研研发发效效能能度度量量 组组织织层层面面聚聚焦焦项项目目关关键键指指标标引引入入极极狐狐星星项项目目成成熟熟度度模模型型评评估估研研发发效效能能度度量量 项项目目层层面面研研发发效效能能度度量量 交交付付速速率率需需求求管管理理D DO OR RA A 指指标标C
15、CI IC CD D 指指标标研研发发效效能能度度量量 交交付付能能力力代代码码评评审审代代码码质质量量研研发发效效能能度度量量 交交付付质质量量研研发发效效能能度度量量 人人员员效效能能人人员员效效能能审审计计事事件件 +审审计计告告警警 研研发发效效能能度度量量 合合规规审审计计管管理理者者应应该该根根据据团团队队目目标标设设计计度度量量体体系系并并定定期期评评估估和和调调整整,持持续续改改进进D De ev vO Op ps s 不不能能简简单单认认为为是是一一种种工工具具、方方法法、技技能能或或组组织织结结构构,D De ev vO Op ps s 的的体体系系是是结结合合所所有有这这
16、些些元元素素来来建建立立一一个个价价值值流流水水线线的的过过程程,使使业业务务更更快快地地交交付付和和运运营营,并并能能更更快快地地应应对对变变化化。道道:组组织织文文化化价值聚焦、责任共担、协同共情、探索试错、持续改进法法:管管理理方方法法精益需求、敏捷开发、可视化、单件流、技术规范、服务管理术术:技技术术实实践践代码化、自动化、云原生、极限编程、持续交付、质量内建、安全内建器器:系系统统工工具具需求、计划、设计、开发、测试、发布、运维、安全、度量 DevOps Master 白皮书企业 DevOps 成功之路D De ev vO Op ps s 研研发发运运维维一一体体化化T TH HA AN NK KS S