概述
小编用docker部署了一套持续集成平台,感兴趣的朋友可以学习一下。
整体架构
docker+jenkins/svn+gitlab+jmeter+ant
一:部署gitlab
Docker pull registry.cn-hangzhou.aliyuncs.com/zhufc/gitlab-ce-zh:zhu2
##拉取gitlab镜像,镜像基础知识详见Docker基础操作
docker run -d -p 8081:8080 registry.cn-hangzhou.aliyuncs.com/zhufc/gitlab-ce-zh:zhu2
##启动gitlab容器
容器启动之后,浏览器就可以打开gitlab服务了
服务部署好了之后,需要修改一下仓库的host和端口
find / -name gitlab.yml
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab-ctl stop 停用gitlab
gitlab-ctl start 启动gitlab
注:此处只能重启git服务,而不能重启容器,否则配置文件会还原!
确认项目地址是虚拟机的host
配置秘钥:
本地安装git工具,获取gitlab密钥
添加项目组与项目,并设置成公开
本地克隆远程仓库并上传文件
二:部署jenkins
Docker pull registry.cn-hangzhou.aliyuncs.com/zhufc/jenkins:Jenkins
##拉取jenkins镜像
Docker run -d -p 8081:8080 registry.cn-hangzhou.aliyuncs.com/zhufc/jenkins:Jenkins
##启动jenkins容器
容器启动之后,浏览器就可以打开jenkins服务了
docker exec -it ${容器id} bash
## 进入jenkins容器
cat /root/.jenkins/secrets/initialAdminPassword
## 获取jenkins密码
密码解锁之后就可以正常操作jenkins了
三:linux下部署jmeter
-
将本地的Jmeter工具包用rz命令上传到服务器
-
解压缩,在opt目录下生成jmeter目录
-
安装unzip:apt-get install unzip
-
解压缩:unzip apache-jmeter-3.2.zip
-
配置Jmeter环境变量。vi /etc/profile,再添加如下变量
export JMETER=/opt/apache-jmeter-3.2
export PATH=$JMETER/bin:$PATH
-
执行命令:source /etc/profile,配置的环境变量生效
-
检查安装结果:jmeter –v
四:linux下部署ant
-
将 apache-ant-1.9.9 上传并解压到/opt目录下,方法同上面的jmeter
-
配置Ant环境变量
vi /etc/profile
在末尾添加两句
export Ant=/usr/local/apache-ant-1.9.9export PATH=$Ant/bin:$PATH
source /etc/profile
## 使配置的环境变量生效
输入 ant -v查看ant版本
-
将jmeter/extras文件夹下的ant-jmeter-1.1.3.jar文件拷贝到ant/lib路径下
五:配置build.xml文件
将build.xml文件安置在jenkins的 ../.jenkins/workspace项目目录下,jenkins执行构建的时候直接去项目路径下找到构建脚本,并执行构建
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Price" default="run" basedir="."> //定义项目名称
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" /> //定义时间戳
</tstamp>
<property environment="env"/>
<property name="ReportName" value="TestReport" /> //定义报告名称
<property name="workspace" value="/home/cttq/.jenkins/workspace/Price" />
<!-- 需要改成自己的项目路径-->
<property name="jmeter.home" value="/usr/tmp/apache-jmeter-3.2" />
<!-- 需要改成liunx上jmeter的根目录-->
<property name="jmeter.result.dir" value="${env.workspace}/resultLog/${env.BUILD_ID}" />
<!-- jmeter生成jtl、html格式的结果报告的路径-->
<property name="jmeter.result.jtlName"value="${jmeter.result.dir}/${ReportName}.jtl" />
<property name="jmeter.result.htmlName"value="${jmeter.result.dir}/${ReportName}.html" />
<target name="run">
<echo message="start..."/>
<antcall target="clean" />
<antcall target="test" />
<antcall target="report" />
</target>
<target name="clean">
<mkdir dir="${env.WORKSPACE}/resultLog/${env.BUILD_ID}" />
</target>
<target name="test">
<taskdef name="jmeter"classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本,includes里的文件也可以用逗号,隔开-->
<testplans dir="${env.WORKSPACE}" includes="mock.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.dir}">
<fileset dir="${jmeter.home}/extras">
</fileset>
</copy>
</target>
</project>
六:jenkins配置插件
1:插件升级
离线的情况下,需要手动配置插件
选择升级站点,填入
http://mirror.xmission.com/jenkins/updates/update-center.json
2:安装ant插件
3:安装svn/git插件(原理相同)
4:执行shell脚本
5:添加一个Email Extension Plugin 插件
6:系统设置
管理员邮箱
smtp和系统邮箱
默认接收人和发送人
邮件模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本邮件由系统自动发出,无需回复!<br/>
各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>构建人员: 测试部门</li>
<li>构建日志: <a href="http://172.29.1.2/${BUILD_NUMBER}/计划V1.0自动化.html">http://172.29.1.2/${BUILD_NUMBER}/计划V1.0自动化.html</a></li>
</ul>
<ul>
</ul>
</td>
</tr>
</table>
</body>
</html>
七:构建结果
通过build.xml文件执行构建,执行shell命令调用jmeter命令行生成测试报告,通过邮件发送指定人