一、安装JDK
1.1 安装目的
jenkins需要运行在jdk上,所以安装jenkins前需要先安装jdk。
1.2 检查环境是否已安装JDK
Shell执行命令java –version 查看是否已安装JDK,如下图所示,当前环境安装的版本为1.8.0_242
1.3 安装前的清理工作
注意:该步骤不是必须执行的,当JDK版本不适用,需安装新的JDK时才执行
shell执行如下命令:
rpm -qa | grep jdk
rpm -qa | grep gcj
yum -y remove java-xxx-xxx
1.4 安装步骤
1)通过XFTP在/usr/local 目录下新建java文件夹,将安装包上传到服务器的/usr/local/java目录下,并解压即可
2)配置JDK环境变量
vim命令修改etc目录下的环境变量文件:profile,填写如下内容:
JAVA_HOME=/usr/local/java/jdk1.8.0_242
JRE_HOME=/usr/local/java/jdk1.8.0_242/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
3)shell执行source /etc/profile 命令,使环境变量生效
4)shell执行命令:java -version查看JDK是否安装成功,结果如下图所示,表示安装成功。
二、部署jmeter
1、 在/opt目录下创建jmeter文件夹
2、上传jmeter文件到jmeter文件夹
3、Vim命令修改etc目录下的环境变量文件:profile,添加如下内容:
export JMETER_HOME=/opt/jmeter/apache-jmeter-3.1
export PATH=$JMETER_HOME/bin:$PATH
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
1、 Shell执行source /etc/profile 命令,使环境变量生效
2、 输入jmeter -v ,打印出如下结果表示安装成功:
三、安装jenkins
(请自行百度,此处不赘述)
四、jmeter压测脚本编写
(请自行百度,此处不赘述)
五、jenkins配置自动化执行jmeter脚本生成测试报告(重点!!!)
1)插件下载
必备插件:HTML Publisher、ant 、DingTalk(钉钉)、email(邮箱)、Startup Trigger、Groovy、SSH、performance、Role-based Authorization Strategy。
插件作用说明:
a、 HTML Publisher和performance报告展示
b、 Startup Trigger、Groovy 解决HTML报告内容为空的问题
c、 SSH 连接远程linux服务器,并执行脚本
d、 Role-based Authorization Strategy 用户、角色权限设置
下载插件的地方:【系统管理】-【插件管理】
2)配置jdk路径信息
路径:【系统管理】-【全局工具配置】
3)配置SSH连接jenkins所在linux服务器
路径:【系统管理】-【系统配置】
4) 创建job
路径:【Dashboard】-【新建任务】
输入工程名称,例如:job name,选择“构建一个*风格的软件项目”,点击确定按钮,即新建成功。
注意:job的构建步骤里各插件的先后顺序决定了执行顺序,这个很重要!!!
5)设置钉钉通知
系统管理-系统配置页面填写钉钉配置信息,具体如下图所示,其中webhook为从钉钉软件上设置的钉钉机器人的webhook。
然后到job页面勾选配置的机器人即可。
6)SVN管理jmx脚本
首先,添加文本参数,建立变量TestScript来存放jmx脚本名,脚本名不需要带.jmx后缀
然然后配置连接SVN
最后写shell命令执行从SVN上取下来的所有jmx脚本
命令如下:
for i in $interface
do
jmeter -n -t $WORKSPACE/$i.jmx -l $filepath/TestReport/$i.jtl
done
7)邮件通知
先到系统管理-系统配置页面填写管理员邮箱地址信息
再填写邮件通知信息
最后进入job,构建后操作步骤处添加操作步骤Extended Email Publisher
,并进行配置:
8)构建触发器
进入job,在构建触发器步骤勾选“定时构建”,输入日程表信息,例如输入:H/5 * * * * 表示每五分钟执行一次。
9)构建job前清理或备份旧报告
进入job,在“构建”处的SSH site选择linux地址,在command处填写删除报告文件的命令,如果不想删除,也可以重命名为其他名,具体看需要写命令,这里是进行删除。
注意:filepath是参数化的文件路径
10)重启ServerAgent
首先在 系统管理-系统配置页面找到Publish over ssh插件,并按下图所示,填写相关信息。
注意:密码只能填写一个,如果需要监控多台服务器,继续新增同样的IP地址配置即可,但是用户的密码只能填写一个,所以这些服务器的密码需一致。
然后进入job,构建环境处勾选“Send files or execute commands over SSH before the build starts”,然后在Exec command处填写重启ServerAgent.sh的脚本。
脚本内容:
#!/bin/bash
echo "Stopping ServerAgent.sh"
pid=`ps -ef | grep " startAgent.sh" | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo $pid
kill -9 $pid
fi
echo "starting ServerAgent.sh"
sleep 1
echo "starting ServerAgent.sh"
nohup sh startAgent.sh & > .out
echo "started ServerAgent.sh"
11)jenkins所在服务器shell脚本执行
首先,进入job后添加两个文本参数,
通过变量filepath存储jmeter的部署路径
通过变量interface存储报告存储路径,参数值处一行代表一个变量值。
然后在“构建”处添加构建步骤Execute shell script on remote host using ssh,然后SSH site选择linux服务器连接地址,在Command处填写shell脚本用于解析jmeter的测试报告;其中
#!/bin/bash -ilex
source /etc/profile;
是必填的,用于使linux的环境变量生效。
12)JMX报告解析
#!/bin/bash -ilex
source /etc/profile;
cd $filepath/lib/ext;
for i in $interface
do
jmeter -g $filepath/TestReport/$i/juhe.jtl -o $filepath/TestReport/$i/Aggregate-Report;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/CPU.png --input-jtl $filepath/TestReport/$i/CPU.jtl --plugin-type PerfMon;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/TPS.png --input-jtl $filepath/TestReport/$i/TPS.jtl --plugin-type TransactionsPerSecond;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/time.png --input-jtl $filepath/TestReport/$i/time.jtl --plugin-type ResponseTimesOverTime;
done
Jmx报告解析命令说明:
命令a: jmeter -g $filepath/TestReport/$i/juhe.jtl -o $filepath/TestReport/$i/Aggregate-Report;
用于将jmeter的聚合报告转换为html报告,这里需要提前下载jmeter的报告解析插件jmeter-results-detail-report_30.xsl,并放到jemter的/opt/jmeter/apache-jmeter-3.1/extras目录下。
命令b: java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/CPU.png --input-jtl $filepath/TestReport/$i/CPU.jtl --plugin-type PerfMon;
用于将jmeter的资源监控报告转换为图片。
执行此命令前需要先通过命令:cd /opt/jmeter/apache-jmeter-3.1/lib/ext; 进入CMDRunner.jar所在目录
命令最后有个命令类型 PerfMon,除了这个还支持如下类型:
ResponseTimesOverTime、 ResponseTimesPercentiles、 ThroughputVsThreads、 TimesVsThreads、 PageDataExtractorOverTime、TransactionsPerSecond
如上图所示,转换TPS报告文件就用TransactionsPerSecond;转换响应时间报告就用ResponseTimesOverTime。
13)HTML报告展示
进入job后先在“构建触发器”处勾选“Build when job nodes start”
再增加构建步骤“Execute system Groovy script”
再编辑该构建步骤,编写命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
用步骤用于解决jenkins的HTML Report插件无法正常显示报告数据。
再增加“构建后操作步骤” “Public HTML reports”,并进行配置
变量Filepath在General处进行配置
都配置好后,构建job,生成的报告可在左侧点击“HTML Report”进行查看
14)展示与上次构建的比对结果
进入job,在构建后操作步骤处添加步骤Publish Performance test result report,并按下图进行配置,以读取指定目录下的jtl报告,job构建后可点击左侧的Performance Thead查看报告结果