自动化测试的环境部署(包括被测系统运行环境部署和自动化测试平台环境部署)步骤繁杂操作时间长测试成本高,同时测试也普遍存在一些痛点:
🔹 开发、测试、运维环境不统一
🔹 无法复现测试报出的BUG
这里提供一种基于Docker的解决方案来快速地部署统一环境。要用到的工具:Docker、Jenkins、Maven、Sonar。
先从我们持续集成的技术思路开始:
图1
如图1,开发同学开发完成后,自己本地跑完单元测试,测试OK了,提交到GitHub,GitHub通过Web Hook触发Jenkins的自动构建(maven打包,Sonar代码分析,Docker构建镜像,并Push到Docker镜像仓库),自动完成项目的测试、部署、发布、全程无需小伙伴们的人工操作。
思路大概扒了一下,下面干货来了。
我们要说下Docker。都说Docker天生适合持续集成, Docker带来的是一种真正容器级的实现。Docker的安装同学们可以自行Google,这里就不累赘了。
假设我们的目录结构是这样 ~/docker。
1、安装Maven,并创建一个Maven Webapp项目。
首先通过拉取Docker的Maven镜像进行安装,超级简单,从Docker中央仓库下载maven镜像,命令:docker pull maven。
接着启动运行一个Maven容器命名maven-hello-world,并通过maven命令创建一个Maven Webapp项目,maven-hello-world。
成功后我们可以看到项目的目录结构如下,再把项目推送到远程git仓库
2、通过Dockerfile方式安装Jenkins。
在~/docker下新建一个jenkins目录,并在目录下新建一个Dockerfile文件,文件内容我们写最简单的“FROM jenkins”。
Dockerfile文件:
然后通过这个Dockerfile去构建自己的Jenkins镜像。
构建完成后我们可以通过docker images命令看到多了2新镜像。
运行镜像。
运行起来后我们配置下Jenkins,安装插件Git plugin和SSH plugin(登陆远程操作)。
在系统管理 > 系统设置里面配置SSH remote hosts。
Jenkins新建一个Hello-world项目。
配置项目的git仓库。
配置git web hook代码更新时自动触发构建。
在~/docker/maven-hello-world下新建基于tomcat的Dockerfile文件内容下:
项目构建时SSH连接远程服务器,执行shell脚本。
Shell脚本关键代码:
3、安装Sonar并集成到Jenkins
和安装Jenkins一样,在~/docker/sonar目录下新建Dockerfile文件,编辑内容“From sonarqube”,并使用命令:docker build构建自己的镜像。
Dockerfile文件:
构建sonarqube镜像:
运行镜像:
在Jenkins里执行shell脚本,通过Maven去调用Sonar服务,在脚本中加入:
以上就是我们的安装,配置了。下面请看效果展示:
修改index.jsp文件,加上时间,并更新远程git仓库
稍等1-2分钟,你会发现Jenkins自动构建了
浏览器效果:
整个流程提交代码,自动构建、部署。
下面我们再加上单元测试,来展示Sonar的效果。
编写好测试脚本:
自动构建后我们可以看到构建成功,和Sonar分析代码结果链接:
点开链接,看以看到Sonar统计信息:
也可以在Jenkins安装jacoco.hpi插件。
结束了!做完这个Demo你会发现部署这环境So easy,没有各种依赖,没有各种系统的差别化安装,从头到尾都是一样、一样、一样。抛开国内糟糕的外网环境,安装整套环境就1个小时内甚至半个小时内的事情。总结下用Docker的方式来部署我们的测试环境,有这么以下几个好处:
🔹 配置一致的测试环境
🔹 软件快速部署
🔹 清洁的测试环境
🔹 快速保留、复制、恢复测试环境
Just Do It!同学们赶紧上手吧,你会喜欢上这种部署环境的方式的!