持续集成与持续交付

持续集成与持续交付
    马上咨询

    汪珺  开发测试架构师、资深咨询师、资深培训师 

    讲师、HP美國(guó)敏捷咨询师、资深咨询师、资深培训师、Exin TTT授权培训讲师(ScrumMaster、Lean、Tmap、DevOpsMaster等)。凤凰项目沙盘认证授权教练,挑战埃及沙盘认证权限讲师,敏捷和DevOps落地转型专家,解决方案专家,某跨國(guó)集团解决方案部门总监。

    一、為(wèi)什么需要该课程

    “在你的公司里,仅涉及一行代码的改动需要花(huā)多(duō)長(cháng)时间才能(néng)部署上線(xiàn)?你的处理(lǐ)方式是否可(kě)重复且可(kě)靠呢(ne)?” 从“决定做某种修改”到“该修改结束正式上線(xiàn)”的这段时间称為(wèi)周期时间(cycle time)。对任何项目而言,它都是一个极為(wèi)重要的度量标准。 

    在很(hěn)多(duō)组织中,周期时间的度量单位是周或者月,而且发布过程也是不可(kě)重复或不可(kě)靠的。部署常常是手工操作过程,甚至将软件部署到测试环境或试运行环境都需要一个团队来完成,更不用(yòng)说部署到生产环境了。我们遇到过同样复杂的项目,它们曾经也是这种状态,但是经过深入的业務(wù)流程重组后,对于某一关键的修改,团队做到了小(xiǎo)时级别甚至分(fēn)钟级别的发布。之所以能(néng)做到,就是因為(wèi)我们创建了一个完全自动化、可(kě)重复且可(kě)靠的过程,让变更顺利地经过构建、部署、测试和发布过程。在这里,自动化是关键,它让开发人员、测试人员和运营人员能(néng)够通过一键式操作完成软件创建和部署过程中的所有(yǒu)常见任務(wù)。

    软件发布应该是一个快速且可(kě)重复的过程。现在,很(hěn)多(duō)公司都会在一天内发布很(hěn)多(duō)次。甚至对于那些代码非常复杂的代码库来说,这样做也是可(kě)能(néng)的。我们在本课程中就会告诉你如何做到这一点。本课程将讲述如何缩短从想法到商(shāng)业价值实现的时间,并使之更安全,从而彻底改变软件交付方式。

    最终目标是全自动化的DevOps,课程介绍了DevOps 的起源和概览,并通过一个贯穿全课程的例子,从架构开始,到代码的存储、构建、测试、部署、监控,直至流程的跟踪,推荐了许多(duō)可(kě)用(yòng)的工具和可(kě)行的示范,面向愿意承担更大责任的开发人员和系统管理(lǐ)员,也很(hěn)适合愿意更好地支持开发人员的运维人员。无须任何DevOps 知识即可(kě)快速上手!

    本课程内容广泛,包括经常提到的配置管理(lǐ)、模块化,源代码控制、发布计划、代码审计、编译依赖和持续集成,以及持续交付、单元/自动化测试和部署流程的自动化。我们也会讲述自动化验收测试、依赖管理(lǐ)、数据库迁移,以及测试和生产环境的创建与管理(lǐ)等技术。 

    二、课程内容安排

    培训内容

    第1单元   DevOps 最佳实践

    内容一:DevOps 核心思想与原理(lǐ)

    1. 我们将為(wèi)您體(tǐ)系化的介绍DevOps的发展历史,并从价值,原则,方法,实践和工具这5个层次為(wèi)您展示DevOps知识體(tǐ)系的全景,建立您对DevOps的整體(tǐ)化,體(tǐ)系化认知。同时,通过对基础设施即代码(Infra As Code)这一DevOps最重要实践的解析,借助案例介绍实施DevOps过程中的策略。
    2. DevOps 概念与评估框架
    3. DevOps 的必要性
    4. 如何发展DevOps文(wén)化-敏捷与快速反馈
    5. DevOps的基础人、过程和技术——的重要性
    6. Docker 容器概述
    7. 解虚拟机和容器之间的差别
    8. Docker 的安装与配置
    9. DevOps应用(yòng)与现状
    10. DevOps工具研究和开发
    第2单元   持续交付

    内容一:软件交付持续交付

    1. 一些常见的发布反模式
    2. 反模式:手工部署软件
    3. 反模式:开发完成之后才向类生产环境部署
    4. 反模式:生产环境的手工配置管理(lǐ)
    5. 如何实现自动化交付目标
    6. 交付团队必须接收反馈并作出反应
    7. 候选发布版本
    8. 软件交付的原则
    9. 创建一个可(kě)重复且可(kě)靠的过程
    10. 将几乎所有(yǒu)事情自动化
    11. 把所有(yǒu)的东西都纳入版本控制
    12. 提前并频繁地做让你感到痛苦的事
    13. “DONE”意味着“已发布”
    14. 交付过程是每个成员的责任
    15. 持续改进
    16. 通过國(guó)际研发中心電(diàn)信计费系统演示持续交付
    第3单元   软件持续集成

    内容一:软件集成

    1. 持续集成的定义
    2. 持续集成的特点
    3. 持续集成原则
    4. 持续集成的核心价值
    5. 持续集成实践步骤
    6. 如何选取最佳解决方案
    7. 持续集成实践计划
    8. 持续集成实践风险


    内容二:软件集成实践---JenKins工具為(wèi)案例

    1. 持续集成工具介绍
    2. 持续集成工具Jenkins
    3. 為(wèi)什么选用(yòng)Jenkins
    4. Jenkins 简介
    5. 搭建Jenkins 环境
    6. Jenkins 的系统配置
    7. Jenkins+版本控制
    8. Jenkins+JUnit
    9. Jenkins+Selenium
    第4单元  版本/ 配置管理(lǐ)-一切皆代码

    内容一:版本控制 

    1. 项目仓库
    2. 我们需要存储什么
    3. 工作拷贝和操作文(wén)件 
    4. 项目,目录以及文(wén)件 
    5. 版本从何而来
    6. 标签 
    7. 分(fēn)支 
    8. 合并 
    9. 加锁策略的选择
    10. 配置管理(lǐ)(CM)
    11. CVS/Subversion版本管理(lǐ)工具
    12. Git版本管理(lǐ)工具


    内容二:配置管理(lǐ) 

    1. 使用(yòng)版本控制 
    2. 对所有(yǒu)内容进行版本控制     
    3. 频繁提交代码到主干      
    4. 使用(yòng)意义明显的提交注释     
    5. 软件配置管理(lǐ) 
    6. 配置与灵活性 
    7. 配置的分(fēn)类     
    8. 应用(yòng)程序的配置管理(lǐ) 
    9. 跨应用(yòng)的配置管理(lǐ) 
    10. 管理(lǐ)配置信息的原则      
    11. 运行环境管理(lǐ)
    12. 环境管理(lǐ)的工具      
    13. 变更过程管理(lǐ)
    14. 通过大量项目案例分(fēn)析如果大规模版本管理(lǐ)
    第5单元  模块化和依赖管理(lǐ)

    内容一:模块化/组件化/包基本原则

    1. 在向组件中分(fēn)配类时应该依据什么原则?
    2. 应该使用(yòng)什么设计原则来管理(lǐ)组件之间的关系?
    3. 组件的设计应该先于类呢(ne)(自顶向下),还是类的设计应该先于组件(自底向上)?
    4. 组件实體(tǐ)以什么方式存在呢(ne)?
    5. 组件创建好后,我们应当将它们用(yòng)于何种目的?
    6. 包的设计原则
    7. REP 重用(yòng)发布等价原则 
    8. CRP 共同重用(yòng)原则
    9. CCP 共同封闭原则
    10. ADP 无环依赖原则
    11. SDP 稳定依赖原则
    12. SAP 稳定抽象原则
    13. 项目案例分(fēn)析
    第6单元  持续检测代码质量-

    内容一:代码质量持续检测 

    1. 代码质量度量
    2. 代码质量审查和评审
    3. 代码度量指标
    4. 代码质量度量的工具
    5. 持续评估代码质量


    内容二:软件代码可(kě)维护性4个分(fēn)类标准

    1. 代码内部质量的核心标准
    2. 可(kě)分(fēn)析性(ANALYZABILITY:找到错误在代码中的位置或者软件中必须修改的部分(fēn)容易程度
    3. 可(kě)修改性(CHANGEABILITY):即要完成一个修改需要的工作量
    4. 稳定性(STABILITY):即修改之后出问题的程度
    5. 可(kě)测试性(TESTABILITY):即能(néng)够验证修改的结果


    内容三:软件代码质量指标

    1. ANALYZABILITY = VG + STMT + AVGS + COMF 
    2. CHANGEABILITY = PARA + LVAR + VOCF + GOTO 
    3. STABILITY = NBCALLING + RETU + DRCT_CALLS + PARA
    4. TESTABILITY = DRCT_CALLS + LEVL + PATH + PARA


    内容四:自动化预防-AEP 

    1. Automated Error Prevention(简称AEP),是指通过整个软件开发周期中自动地预防错误来提高产品质量
    2. 自动化错误预防五大法则
    3. 应用(yòng)行业最佳实践来防止普遍错误并建立全方位的错误预防基础---案例分(fēn)析
    4. 按需要修改实践来预防特殊的错误
    5. 确保每个小(xiǎo)组正确地,始终如一地贯彻执行AEP
    6. 循环渐进地采用(yòng)每一个实践
    7. 利用(yòng)统计来稳定每一个过程,让它发挥价值
    8. 通过案例进行分(fēn)析,某研发中心代码自动化预防机制建立


    内容五:BugDetective 

    1. BugDetective概述
    2. BugDetective规则
    3. Parasoft公司旗下产品C++Test BugDetective分(fēn)析技术,该技术使用(yòng)了几种分(fēn)析技巧,包括模拟应用(yòng)程序执行路径,以识别可(kě)能(néng)触发运行时缺陷的路径。检测到的缺陷包括,使用(yòng)未初始化的内存、引用(yòng)空指针、除数為(wèi)零、内存和资源泄漏。
    4. 通过案例进行分(fēn)析,某研发中心代码自动化预防机制建立
    第7单元  自动化测试

    内容一:理(lǐ)解单元测试 

    1. 什么是单元测试?
    2. 為(wèi)什么要写单元测试,為(wèi)什么不写单元测试
    3. 理(lǐ)解单元测试--第一个单元测试案例
    4. 好的测试是什么样子的,為(wèi)什么要写"好"的单元测试
    5. 单元测试的维护成本
    6. 单元测试与自动化测试
    7. 分(fēn)析真实项目,如何做单元测试
    8. 通过案例分(fēn)析,了解基本的单元测试


    内容二:自动化验收测试 

    1. 自动化验收测试     
    2. 為(wèi)什么验收测试是至关重要的      
    3. 如何创建可(kě)维护的验收测试套件  
    4. 分(fēn)析人员和测试人员的角色 
    5. 将验收条件变成可(kě)执行的规格说明书
    6. 窗口驱动器模式:让测试与GUI解耦       
    7. 实现验收测试  
    8. 验收测试中的状态
    9. 验收测试阶段 
    10. 通过案例进行分(fēn)析,自动化测试最佳实践
    第8单元  持续数据库集成

    内容一:持续数据机集成和更新(xīn)

    1. 持续数据库集成
    2. 自动化数据监测和更新(xīn)
    3. 使用(yòng)本地数据库验证
    4. 利用(yòng)版本控制数据库更新(xīn)
    5. 自动化根据开发工程师培训修改数据库     
    6. 让DBA和开发一起
    第9单元  持续部署

    内容一:持续部署环境准备

    1. 随时随地发布可(kě)工作的软件
    2. 為(wèi)库中的资产打上标签
    3. 得到干净的环境
    4. 為(wèi)每一个构建版打上标签
    5. 执行所有(yǒu)的测试
    6. 创建构建反馈报告
    7. 回滚构建的过程能(néng)力


    内容二:持续部署

    1. 持续部署与发布     
    2. 创建发布策略 
    3. 应用(yòng)程序的部署和晋级
    4. 对发布过程进行建模并让构建晋级
    5. 部署回滚和零停机发布 
    6. 蓝绿部署和金丝雀发布
    7. 紧急修复和持续部署
    8. 记录部署活动
    9. 快速失败
    10. 不要直接对生产环境进行修改
    第10单元  持续反馈

    内容一:持续反馈

    1. 用(yòng)问题跟踪器做什么? 
    2. 工作流和问题的一些例子
    3. 我们需要从问题跟踪器里得到什么?
    4. 问题跟踪器激增所带来的问题 
    5. 所有(yǒu)的跟踪器
    6. Bugzilla 
    7. Trac 
    8. 所有(yǒu)正确的东西
    9. 使用(yòng)持续反馈机制
    10. 電(diàn)子邮件/文(wén)本消息


    内容二:持续交付信息反馈----看板和Dashboard

    1. 如何建立Dashboard来快速定位整个系统的质量弱点
    2. 大规模自动化测试的Dashboard实际演示与详解
    3. 通过率、各种Top10及缺陷与用(yòng)例的关联