版本管理与持续集成最佳实践

版本管理与持续集成最佳实践
    马上咨询


    陆老师  前微软亚洲工程院 自动化测试及持续集成负责人

    现任Lane Crawford集团电子商务部副总监,负责由零开始组建电子商务部及全面将线下业务整合至线上,以及整个团队的岗位设置、人员招聘、日常管理、产品、研发、质量、东南亚市场运营、传统业务系统升级及流程重造等工作。目前研发团队覆盖中国大陆、香港、东南亚,将集团业务由B2C扩展至B2B及B2B2C多模式。同时负责整个集团的研发规范化。
    具有超过10年技术团队管理工作经验,一直专注在大型系统软件开发、自动化测试及持续集成/持续交付、产品化等工作上,对技术团队管理也比较有经验。目前个人专注于自动化测试及持续集成/持续交付;产品设计框架及方法论;基于多租户技术的SaaS系统架构等技术方向。
    曾就职于微软亚洲工程院,先后创建过多个不同职能的团队,有创新型团队、执行型团队、以及保障型团队等。在团队结构优化、人才梯队建设、以及跨部门合作管理方面有丰富经验。注重培养团队的创新能力,所带团队发表过12个国际专利、自主立项研发2个新产品线。对如何发挥团队潜力有深入研究。擅长团队激励,从基层员工发现及培养有潜力的管理者,所带过的团队均表现出团队整体能力及成熟度的持续提升!

    • 微软亚洲工程院自动化框架设计及主程序之一
    • 微软核心项目持续集成建设负责人
    • 所研发的自动化测试及持续集成赢得微软工程技术创新奖
    • 带领团队建立微软亚洲工程院自动化实验室及持续集成系统
    • Photoshop自动化框架及持续集成系统总设计师
    • 建立Photoshop全球自动化实验室
    • 在《程序员》杂志上发表过数篇关于自动化测试技术及持续集成的文章

    曾受邀在MSUP Top100及MPD会议上/沙龙上发表关于自动化测试、社交网络游戏产品设计核心等技术演讲。 

    课程简介

    配置管理是持续集成及DevOps实施的重要技术支撑及实施基础。本课程全面细致地介绍配置管理的理论及最佳实践,包括版本控制、协同开发、跨产品版本管理、安全策略、构建管理、持续集成的完整过程。为多人快速协同开发、敏捷测试、DevOps、持续集成及持续发布建设坚实的配置管理基础支撑。

    目标收益

    学员可以系统性地掌握配置管理的相关知识、并合理进行分支管理、基线管理等实战。通过本次培训可以为快速协同开发环境及持续交付的项目要求提供有效支持。
    将在课程中要逐一解决的问题:
    1. 如何保证源码库中的代码的可用性?
    2. 在什么情况下使用分支?
    3. 基线的类型有几种?分别在什么情况下使用?
    4. 公司的项目背景对代码安全比较敏感,多个团队工作在一个大项目里,但希望每个团队只能访问自己团队部分的源码,而技术上又彼此依赖,有没有解决方案?
    5. 哪些类型的文件适合纳入版本库?哪些文件类型不适合?希望有个最佳实践的规范建议
    6. 公司有的是项目型开发、有的是产品型开发,这两种类型的版本管理有何不同?
    7. 多团队协同开发的情况下应该如何合理进行版本控制?既能保证版本清晰、又不会因为一些改动影响效率。

    培训对象

    • 配置管理员
    • 开发人员
    • 持续集成实施人员
    • 开发经理、项目经理

    课程大纲

    第一章【软件配置管理基础理论】
    这一模块先系统性地介绍软件配置管理以及版本控制的理论知识;让学员从原理上掌握版本管理的运行机制,为后续建设配置管理体系的实战打下坚实的基础。

    (1)什么是软件配置管理
    (2)案例分享:对比导入版本控制之前之后的实际变化
    (3)源代码版本控制的原理
    (4)版本管理工具的演进:集中式版本控制分布式版本控制
    (5)一个比较难招到人才的岗位:配置管理员

    第二章【协同开发】
    多人共同编辑和修改同一段源代码是开发团队的常见现象。这是协同开发必须面对的现象,本模块介绍配置管理的协同开发原则及冲突处理的方法,目标效果是在多人协同开发模式下保障版本清晰、版本演进、及项目效率 

    (1)工作空间与版本库的定位与用途
    (2)代码传递从星形模式到网状模式
    (3)版本覆盖的预防
    (4)版本冲突的处理方法和原则
    (5)用任务单元来组织工作

    第三章【版本分支的使用及规范】
    分支是版本控制中的重要内容,它就像一把双刃剑,使用得当则配置管理灵活又强大、反之则增加了复杂性和混乱。本章内容分享分支的原理及重点讲解分支使用的最佳实践。 

    (1)深入理解何为版本分支
    (2)库级分支的配置及使用
    (3)文件级分支的版本规则及应用
    (4)分支的分支
    (5)分支的合并及冲突处理
    (6)扩展讨论:开发库-受控库-产品库模式的优缺点

    第四章【基线的使用及规范】
    基线同样是配置管理中的重要内容,合理使用基线可以化繁为简,通过各阶段的基线规则,可以让复杂的源码项目管理变得清晰。更重要的是,基线可以极大提高版本管理的可靠性。 

    (1)基线的概念及作用
    (2)开发进程中的基线设置
    (3)阶段性成果的基线应用
    (4)发布级的基线设置
    (5)分支和基线的混合应用
    (6)基线的合理使用,最佳实践分享

    第五章【跨产品版本管理及构建管理】
    越来越多的软件或应用以产品包的形式出现,例如微软的Office中有Word、Excel、PPT等;Adobe的CS中有Photoshop、Light Room、Illustrator等。这些软件即相对独立又有很多通用共用的代码块。这一章重点讲解跨产品版本管理的实践及方法 

    (1)构建管理的核心
    (2)自动构建、每日构建、和构建分级自动化
    (3)通过构建级别的定义及使用支撑跨产品技术集成
    (4)产品内可使用的构建等级
    (5)跨产品可使用的构建等级
    (6)产品包级别的构建等级

    第六章【配置管理的角色及安全设置】
    源代码是团队的核心工作成果,所以安全是源代码管理中的核心关注点。本章用一个多团队协同开发的实例讲解配置管理的安全策略、最佳实践、需要哪些角色、以及每一个角色的权限设置。 

    (1)系统级管理员的设定及权限
    (2)项目级管理员的设定及权限
    (3)用户角色设定及权限
    (4)全部访问控制及部分访问控制
    (5)实例分享:多团队协同开发的安全策略

    第七章【持续集成系统的设计及部署】
    这一模块的目标是建设部署完备的持续集成系统:包括源码库、构建管理、任务调度系统、自动化系统、拓扑管理的综合应用。这将是持续集成及DevOps的核心支撑。
    (1)构建管理的原理及与源码管理的关系
    (2)构建等级定义最佳实践
    (3)每日构建的原则与难点,及相应的解决方法
    (4)持续集成总体建设思路
    (5)自动化测试+持续集成的运行部署策略
    (6)测试环境及测试数据的自动化部署
    (7)如何获取及分析代码覆盖率检查
    (8)多机器池自动化部署
    (9)如何将大规模自动化+版本控制+持续集成部署为一个复杂完备的大型配置管理体系