你准备好开始DevOps了吗?
前面一章节我们已经了解了Agile,CI/CD,DevOps,作为DevOps的起点,对于一个团队,如何开始自己的持续集成?根据我的经验,列出了一下需要考虑的点
1. 代码管理/分支策略
- 代码托管在哪里?
 - 使用git or svn?
 - 分支策略/分支模型?
 - CI 服务可以访问您的代码库吗?
 - 代码结构如何?需要一个库,还是多个库?
 - 版本号定义?
 - 依赖管理?命名规则?
 - Code Review ?
 
2. 持续集成服务器
- 选好你需要的CI server了吗? jenkins, Teamcity,GoCD or AuzreDevOps
 - CI Server 使用的学习
 - CI Server 如何部署,需要多少资源,需要多少并发job ?
 - Pipeline编写,如何标准化?是否需要参数化?
 - 与代码仓库,制品库集成?
 - 静态代码检查?SonarQube
 - 多分支/多个仓库,相互依赖?
 
3. 制品库
- 选择合适的制品库服务器 (jar, npm, nuget, docker or other package ?)
 - 制品的版本? 如何与code commit id 关联?
 - 制品库保存策略/tag 管理
 
4. 测试类型
CI阶段除了保证代码没有冲突,编译通过之外,最重要的就是测试 。每次代码变更后,我们需要自动运行测试用例。
在初始阶段并不需要实现所有的测试类型。一开始可以以单元测试入手,随着时间扩展覆盖面。
- 单元测试:范围非常小,验证每个独立方法级别的操作。
 - 集成测试:保证模块间运行正常,包括多个模块、多个服务。
 - 验收测试:与集成测试类似,但是仅关注业务 case,而不是模块内部本身。
 - UI 测试:从用户的角度保证呈现正确运行。
 
并不是所有的测试都是对等的,实际运行中可以做些取舍。
4级测试规划

单元测试实现起来既快成本又低,因为它们主要是对小代码块进行检查。
UI 测试实施起来很复杂,运行起来很慢,因为它通常需要启动一个完整的环境以及多个服务来模拟浏览器或移动行为。实际情况可能希望限制复杂的 UI 测试的数量,并依赖基础上良好的单元测试来快速构建,并尽快获得开发人员的反馈。
单元测试前期投入少,短期内可以看到效果,对开发人员要求高;UI测试前期人员成本投入大,需要很长时间看到效果
代码覆盖率
- 使用代码覆盖率查找未测试的代码。一旦您采用了自动化测试,最好将它与一个测试覆盖工具结合起来,帮助了解测试套件覆盖了多少代码库。代码覆盖率定在 80%以上是很好的,但要注意不要将高覆盖率与良好的测试套件混淆。代码覆盖工具将帮助您找到未经测试的代码,但在一天结束的时候,测试的质量会产生影响。如果刚开始,不要急于获得代码库的 100%覆盖率,而是使用测试覆盖率工具来找出应用程序的关键部分,这些部分还没有测试并从那里开始。
 - 重构是一个添加测试的机会。如果您将要对应用程序进行重大更改,那么应该首先围绕可能受到影响的特性编写验收测试。这将为您提供一个安全网,以确保在重构代码或添加新功能后,原始行为不会受到影响。
 
5. 测试/部署环境准备
- 测试需要多少资源 ?
 - 编写自动化部署脚本? python,shell, powershell, or ansible ?
 - 多环境/多分支 配置?
 
6. 团队CI文化
- 当团队实践 CI 时,需要了解分支模型,按照定义的commit 策略,进行频繁提交
 - 提交冲突了,如何处理?
 - 怎么反馈冲突 或者build break ? 谁处理?
 - 推广普及CI文化
- 尽早集成。如果很长时间不合并代码,代码冲突的风险就越高,代码冲突的范围就越广。如果发现某些分支会影响已经存在的分支,需要增加发布关闭标签,避免发布时两个分支冲突。
 - 保证编译时时刻刻畅通。一旦发现任何编译问题,立刻修复,否则可能会带来更多的错误。测试套件需要尽快反馈测试结果,或者优先返回短时间测试(单元测试)的结果,否则开发者可能就切换回开发了。一旦编译出错,需要通知给开发者,或者更进一步给出一个 dashboard,每个人都可以在这里查看编译结果。
 - 把测试用例纳入流程的一部分。确保每个分支都有自动化测试用例。似乎编写测试用例拖慢了项目节奏,但是它可以减少回归时间,减少每次迭代带来的 bug。而且每次测试通过后,将会非常有信息合并到主干分支,因为新增的内容不影响以前的功能。
 - 修 bug 的时候编写测试用例。把 bug 的每个场景都编写成测试用例,避免再次出现。
 
 
你准备好开始DevOps了吗?的更多相关文章
- XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化
		
XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化 我们现在用的就是典型的XP+devOps模式,已经放弃scrum了 现在还很多公司弄docker虚拟化docker非常复杂,当然 ...
 - DevOps 发展融合运维可视化
		
DevOps,是开发(Development)和运维(Operations)的组合,代表一种文化.运动或实践,旨在促进软件交付和基础设施变更软件开发人员(Dev)和 IT 运维技术人员(Ops)之间的 ...
 - DevOps的基本原则与介绍
		
DevOps的基本原则与介绍 DevOps这个术语是developer与operations的合并简写.实现还有QA.DevOps描述与精简软件交付流程,在今天已经开始广泛的使用.强调从生 ...
 - CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试
		
原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...
 - 企业运营对 DevOps 的「傲慢与偏见」
		
摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...
 - 转载 DevOps的基本原则与介绍
		
转载原地址: http://www.cnblogs.com/wintersun/p/3339047.html DevOps的基本原则与介绍 DevOps这个术语是developer与operatio ...
 - DevOps on Android: 加速 App 从代码到上线
		
DevOps 是一个众所周知的开发方法,其主要目的是自动化软件交付.事实上,DevOps 的目标是不断的测试,代码质量,功能开发,更容易维护版本.因此,DevOps 的一个最终目标是为开发者进行快速, ...
 - TFS在项目中Devops落地进程(上)
		
经过近2年折腾,基于TFS的Devops主线工程大体落地完毕.在此大体回忆下中间的各种历程. 开始之前简单说下什么是TFS(Team Foundation Server). TFS是微软推出的一款AL ...
 - 如何将Azure DevOps中的代码发布到Azure App Service中
		
标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...
 
随机推荐
- 检查型异常和非检查型异常——Java
			
文章目录 检查型异常和非检查型异常--Java 检查型异常 非检查型异常 结语 检查型异常和非检查型异常--Java Java语言规范将派生于Error类或RuntimeExceprion类的所有异常 ...
 - 36 个JS 面试题
			
1.JS中let和const有什么用? 在现代js中,let&const是创建变量的不同方式. 在早期的js中,咱们使用var关键字来创建变量. let&const关键字是在ES6版本 ...
 - 【特别篇】不为人知的U盘秘密
			
U盘是我们代码爱好者的必要东西,方便于我们更好的拷文件,使用一些已经配置好的东西,比如说:小编经常会将linux系统放进去,平时就可以随时用了. But 你的U盘真的正常吗?你了解多少? 关于U盘 ...
 - 面试题-JavaSE语法
			
1.Java 有没有 goto 语句? goto 是 Java 中的保留字,在目前版本的 Java 中没有使用.根据 James Gosling(Java 之父)编写的<The Java Pr ...
 - C++动态规划
			
数塔: #include <iostream> using namespace std; int a[1000][1000]; int main(){ int n; cin>> ...
 - 开始进行lammps手册的学习啦,跟着Manual一边翻译一边做吧!(转载)
			
转载自:http://blog.sina.com.cn/s/blog_64813e370100ngsz.html 注明:黄色部分基本上为不懂的部分,红色字体为所做注释 一.各种文件的介绍: 1 in ...
 - .net core 3.0 web api 重点设置,主要为了解决axios post不到参数问题
			
这两天研究.net core 3.0升级,前端vue+axios 后端web api.测试过程中发现post的时候,由于提交的是json对象,后端web api获取不到数据. 今天贴了下解决过程.主要 ...
 - Redis秒杀实战-微信抢红包-秒杀库存,附案例源码(Jmeter压测)
			
导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...
 - Redis操作及集群搭建以及高可用配置
			
NoSQL - Redis 缓存技术 Redis功能介绍 数据类型丰富 支持持久化 多种内存分配及回收策略 支持弱事务 支持高可用 支持分布式分片集群 企业缓存产品介绍 Memcached: 优点:高 ...
 - 【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能
			
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...