开发有基线,测试和运维也应该有基线

 

我们都知道,基线,对于软件开发过程的重要性。SCM系统是整个软件开发活动的中心。

 

基线是什么?

基线为软件开发提供了一个定点和快照。它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。

其实就是branch或tag。

 

基线的优点是什么?

  • 新项目可以从基线提供的定点之中建立。
  • 作为一个单独分支,新项目将与随后对原始项目(在主要分支上)所进行的变更进行隔离。
  • 各开发人员可以将建有基线的构件作为他在隔离的私有工作区中进行更新的基础。
  • 当认为更新不稳定或不可信时,基线为团队提供一种取消变更的方法。
  • 您可以利用基线重新建立基于某个特定发布版本的配置,这样也可以重现已报告的错误。

从上面可以看出,基线的最大价值在于可以回溯,可以重复

为环境建立基线

软件开发过程有基线,但是过去我们的测试和运维的基线是什么?

无论测试、还是运维,都涉及到一个核心的功能,部署环境

在过去的测试环节中,部署浪费了很多时间。部署有2个问题需要考虑:

  • 自动化部署
  • 保证环境的一致性

自动化部署可以提高测试的效率。过去的做法一般是通过写脚本实现。但是用于部署A项目的脚本,并不适合B项目,因为每个项目的依赖环境往往有差异。同时项目在发展过程中,环境的需求也会发生变化,这往往要求部署的脚本能够同步更新。因此部署脚本的编写和维护,对测试人员而言,也是一个成本。

环境的一致性,通过自动化部署,尽量保证其一致。但是很多的问题往往是由于环境不一致导致巨大的沟通、排查成本。我们经常遇到下面类似的抱怨:

明明在我这里好好的,怎么到你那就不行了呢?

这个问题产生的原因,就在于:Baseline我们只做了一半,即开发有SCM,有基线。但是环境呢?环境没有基线,因此不同的人在沟通时很可能你们的基线就不同。没有基线的沟通就是浪费时间。

上面的抱怨,每天都在发生!

 

cSphere推出私有DockerHub,为测试和运维建立基线

插图

DockerHub是什么?是一个类似github,内建docker registry功能,并提供自动构建管理、registry管理的整体解决方案。

DockerHub能干嘛?

通过dockerhub,你可以将代码仓库中的代码通过webhook机制,自动触发dockerhub构建,构建完成后自动推送到registry里,并最后主动触发一个外部链接,比如触发部署,从而真正实现从开发、测试甚至生产整个环节的自动化和一致性管理。

 

DockerHub如何为测试和运维建立基线?

答案就是:由于镜像有版本控制系统,这其实就是测试和运维的基线。基于docker image的自动(或半自动)、一致的部署。

 

一般镜像为了维护方便,会分成三类镜像,即:base image,middle image和app image,三者之间有继承(from)关系。

 

运维负责构建两类镜像:base image和middleware image,具体流程如下:

创建Git仓库 => 手工调试镜像 => 编写Dockerfile => 配置webhook =>自动构建 => 自动push => 更新镜像状态

 

开发负责构建App镜像:app image,具体流程如下:

编写Dockerfile, AddCode => 配置webhook => 自动构建 => 自动push => 自动部署测试环境 => 更新镜像状态

 

应用镜像一旦生成,可以自动部署或半自动部署。对于测试而言,可以重复部署多个隔离的相同的环境。所以基于docker镜像进行测试,对测试的效率提升很大。这无疑加快了业务上线的进度,避免将人力和时间浪费在环境上面。也避免了casebycase编写脚本维护脚本。测试人员甚至可以在自己的笔记本里完成测试。

 

对于运维而言,只要业务没有在容器里写入持久化数据,那么任何时刻,都可以快速销毁一组容器,并重新部署一组新的容器。这个特性带来了很多有趣的变革,比如:”开发人员不能登录服务器”的金科玉律可以废弃了。

 

 

私有DockerHub,为测试和运维建立Baseline基线
Tagged on:                         

发表评论

电子邮件地址不会被公开。 必填项已用*标注