背景:Gatling作为一款新兴的性能测试工具,具有高性能高稳定性,方便的代码维护管理等特点。
环境:gatling-charts-highcharts-bundle-3.31 + jenkins
步骤:
一、安装
1.安装Gatling
官网(https://gatling.io/open-source/start-testing/)下载免费安装版,解压即可。前提是,操作系统已安装Java8及以上版本。
2.使用
这里不是本文重点,所以可以参考其他好文。例如,https://blog.csdn.net/qq_37023538/article/details/54290035
3.jenkins上Gatling插件安装
这个可以找度娘问问
4.流水线配置
1)在Jenkins上创建“流水线”
2)配置脚本如下:
param1="0" // Gatling场景测试输入的参数1
param2="0" // Gatling场景测试输入的参数2
taskname="Gatling-Workflow" // 流水线名称
node{
stage('test'){
try{
sshagent(["testpri"]){
sh """
cd /tools/gatling/bin;
sh exec_gatling.sh $param1 $param2 // exec_gatling.sh中调用gatling.sh运行Gatling
"""
}
}catch(exc){
echo "failed"
}finally{
stage('collect'){
sshagent(["testpri"]){
def project_path=sh returnStdout: true, script: ". /tools/sendgatlingreport.sh ${taskname}" // sendgatlingreport.sh将Gatling报告copy到jenkins指定目录,这样才能展示Gatling报告
project_path=project_path.trim()
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true, reportDir: "result/${project_path}", reportFiles: 'index.html', reportName: 'HTML Report', reportTitles: ''])
}
}
}
}
}
3)exec_gatling.sh。注意:该脚本放在gatling.sh同级目录下,否则无法调用gatling.sh。
#!/bin/bash
set -x
param1=$1
param2=$2
echo "$param1">tmp.s
echo "$param2">tmp.s
if true; then
./gatling.sh
fi < ./tmp.s
4)sendgatlingreport.sh
#!/bin/bash
taskname=$1
path=/tools/gatling/results/
cd $path
cp -r $path /root/.jenkins/workspace/$taskname/ # jenkins的job目录
dir=`ls -l | awk '/^d/ {print $Nf}'` # 找到job目录下的文件夹。这里默认只一个
echo $dir
问题:
这里流水线配置时,gatling和jenkins放在同一执行机环境中,因此在copy gatling的执行结果报告时,没有scp的这些操作。如果gatling与jenkins不在同一执行机环境,则需要ssh到gatling所在机器上,然后执行scp操作。
sh """
ssh -o StrictHostKevChecking=no -l root <gatling所在地址>
scp -rq root@<jenkins所在地址>:/目的目录 root@<gatling所在地址>/<gatling结果报告目录>
"""