快速搭建,一趟成功

本文旨在快速搭建一个Jenkins持续集成的测试环境,其中用到的资料均以编写时最新的稳定版为主。

安装并配置JDK

先检查一本地有没有JDK,有的话就不用下载了,免得浪费时间。 image

可以看到,我本地的一些其他软件自带了JDK,而且应该有三个不同的版本,选择最新的版本设置环境变量就行。如果本地没有现成的JDK,那么建议直接下载最新的长期支持版即可。

Download:https://openjdk.java.net

image

然后在path里面加一行%JAVA_HOME%\bin,保存并验证。 image

Jmeter安装配置

下载Jmeter

Download:https://jmeter.apache.org

配置环境

新建一个变量名Jmeter,变量值如下: image

再把变量名加到path里。 image

Jemter默认保存de是jtl格式的文件,需要设置Jmeter/bin/jmeter.properties的内容,把jmeter.save.saveservice.output_format=csv改为jmeter.save.saveservice.output_format=xml

Ant安装配置

下载Ant

Download:http://ant.apache.org/bindownload.cgi

配置环境

image 然后在path里面加一行%ANT%,保存后打开CMD验证一下。 image

从Jmeter的安装目录中找到apache-jmeter-5.2.1\extras\ant-jmeter-1.1.1.jar,把这个文件复制到Ant的lib目录中。 否则Ant在运行报错说找不到org.programmerplanet.ant.taskdefs.jmeter.JMeterTask这个类。

Jenkins安装配置

下载Jenkins

一般情况下,下载的都是war格式的包。

Download:https://www.jenkins.io/download

安装

emmmmm 直接下载到TomCat的工作目录就可以了,啥是安装?

apache-tomcat-9.0.35/webapps

Jenkins跑起来

进入TomCat的bin目录,运行startup

cd apache-tomcat-9.0.35\bin
startup.bat

对自己有信心的话,就不用看CMD的输出信息了,直接打开网址

http://localhost:8080/{{jenkins-2.222.3}}

注意这里花括号搞起来的是webapps目录里Jenkins的war包的文件名 image

一般来说,默认的Jenkins插件源在国内都很慢,不用点魔法根本不能玩,对于不会魔法的同学我也要妙招要写出来。

然后再去安装插件就超级快了,安装插件的时候也不要闲着,来建一个Jenkins项目目录,结构如下:

.
└── JmeterAutoTest //项目根目录
    ├── build.xml //Ant的构建文件
    ├── resultlog //输出结果
    │   ├── html
    │   └── jtl
    └── script //放Jemter的脚本

其中build.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<project name="pc" default="all" basedir="\JmeterAutoTest">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="\Services\apache-jmeter-5.2.1" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="\JmeterAutoTest\resultlog\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="\JmeterAutoTest\resultlog\html" />
    <!-- 生成的报告的前缀 -->
    <property name="ReportName" value="TestReport" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    <!-- 接收测试报告的邮箱 -->
    <property name="mail_from" value="support@vmert.com" />
    <property name="mail_to" value="juch@vmert.com" />
    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
		<antcall target="send" />
    </target>
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
            <testplans dir="\JmeterAutoTest\script" />
        </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">
        <xslt
	    classpathref="xslt.classpath"
            force="true"
	    in="${jmeter.result.jtlName}" 
	    out="${jmeter.result.htmlName}" 
	    style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
            <param name="dateReport" expression="${time}"/>
	</xslt>
        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.webp" />
                <include name="expand.webp" />
            </fileset>
        </copy>
    </target>
    <!-- 发送邮件 -->
	<target name="send" >
        <!-- 填写你发送邮件的邮箱的STMP信息 -->
        <mail mailhost="smtp.office365.com" mailport="25" subject="Test Report!" messagemimetype="text/html" user="support@vmert.com" password="****************" >
        <from address="${mail_from}"/>
        <to address="${mail_to}"/>
        <message>This email was sent automatically by ANT. Please check the automation test report. Thank you!</message>
		<attachments> 
			<fileset dir="${jmeter.result.html.dir}">
				<include name="${ReportName}${time}.html"/>
			</fileset>
		</attachments>
		</mail>
    </target>
</project>

项目目录配置好后估计Jenkins也初始化完成了。

来 Create new jobs 吧!

image

附录

TomCat

image 获得猫咪:http://tomcat.apache.org

Download List

Download JDK

Download Jmeter

Download Ant

Download Jenkins