自动化测试的环境部署(包括被测系统运行环境部署和自动化测试平台环境部署)步骤繁杂操作时间长测试成本高,同时测试也普遍存在一些痛点:
· 开发、测试、运维环境不统一
· 无法复现测试报出的BUG
先从我们持续集成的技术思路开始:
图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脚本关键代码: