{"id":558,"date":"2013-05-17T19:59:03","date_gmt":"2013-05-17T11:59:03","guid":{"rendered":"http:\/\/www.yeetrack.com\/?p=558"},"modified":"2013-09-27T22:36:40","modified_gmt":"2013-09-27T14:36:40","slug":"jenkinsantjmeter%e8%87%aa%e5%8a%a8%e5%8c%96%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95%e5%b9%b3%e5%8f%b0","status":"publish","type":"post","link":"https:\/\/www.yeetrack.com\/?p=558","title":{"rendered":"jenkins+ant+jmeter\u81ea\u52a8\u5316\u6027\u80fd\u6d4b\u8bd5\u5e73\u53f0"},"content":{"rendered":"<p>Jmeter\u662f\u6027\u80fd\u6d4b\u8bd5\u7684\u5de5\u5177\uff0cjava\u7f16\u5199\u3001\u5f00\u6e90\uff0c\u5c0f\u5de7\u65b9\u4fbf\uff0c\u53ef\u4ee5\u56fe\u5f62\u754c\u9762\u8fd0\u884c\u4e5f\u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e0b\u8fd0\u884c\u3002\u7f51\u4e0a\u5df2\u7ecf\u6709\u4eba\u4f7f\u7528ant\u6765\u8fd0\u884c\uff0c<a href=\"http:\/\/www.programmerplanet.org\/projects\/jmeter-ant-task\/\">http:\/\/www.programmerplanet.org\/projects\/jmeter-ant-task\/<\/a>,\u65e2\u7136\u53ef\u4ee5\u4f7f\u7528ant\u8fd0\u884c\uff0c\u90a3\u548chudson\u3001jenkins\u96c6\u6210\u5c31\u5f88\u65b9\u4fbf\u4e86\uff0c\u800c\u4e14jenkins\u4e0a\u4e5f\u6709\u76f8\u5e94\u7684\u63d2\u4ef6<a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Performance+Plugin\">Performance Plugin<\/a>,\u53ef\u4ee5\u81ea\u52a8\u6536\u96c6jmeter\u7684\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5c55\u793a\u51fa\u6765\u3002<!--more--><\/p>\n<p>\u9996\u5148\u53bb\u4e0b\u8f7djmeter\uff0c\u57282.8\u7248\u672c\u4e2d\u6d4b\u8bd5\u901a\u8fc7\uff0c2.9\u7248\u672c\u6d4b\u8bd5\u672a\u901a\u8fc7\u3002\u4e0b\u8f7d<a href=\"http:\/\/www.programmerplanet.org\/media\/ant-jmeter\/ant-jmeter-1.1.1.jar\">ant-jmeter-1.1.1.jar<\/a>\u653e\u5728jmeter\u4e3b\u76ee\u5f55lib\u6587\u4ef6\u5939\u4e0b\u3002<\/p>\n<p>\u4e0b\u8f7d\u9700\u8981\u7684ant\u5305\uff0c\u5305\u542b\u914d\u7f6e\u6587\u4ef6\u548c\u4e00\u4e9bjar\u5305\u3002\u91cc\u9762\u7684build.xml\u662f\u914d\u7f6e\u6587\u4ef6\uff0c\u53ef\u4ee5\u81ea\u5b9a\u4e49\u3002\u9700\u8981\u4fee\u6539\u5176\u4e2djmeter\u8def\u5f84\uff0c\u7136\u540e\u76f4\u63a5ant\u8fd0\u884c\u5373\u53ef\u3002 \u6837\u4f8b\u4e0b\u8f7d\uff1a<a href=\"http:\/\/pan.baidu.com\/share\/link?shareid=457243&amp;uk=537055152\">http:\/\/pan.baidu.com\/share\/link?shareid=457243&amp;uk=537055152<\/a><\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;project default=\"all\"&gt;\n&lt;!-- Define your Jmeter Home &amp; Your Report Title &amp; Interval Time Between Test--&gt;\n&lt;property name=\"report.title\" value=\"WebLoad Test Report\"\/&gt;\n&lt;property name=\"jmeter-home\" location=\"D:\\work\\apache-jmeter-2.8\" \/&gt;\n&lt;property name = \"interval-time-in-seconds\" value =\"10\"\/&gt;\n&lt;!-- default path config, you can modify for your own requirement;Generally, you do not need to modify --&gt;\n&lt;property environment=\"env\" \/&gt;\n&lt;property name=\"runremote\" value=\"false\"\/&gt;\n&lt;property name=\"resultBase\" value=\"results\"\/&gt;\n&lt;property name=\"results.jtl\" value=\"jtl\"\/&gt;\n&lt;property name=\"results.html\" value =\"html\"\/&gt;\n&lt;property name=\"jmxs.dir\"  value= \"jmxs\"\/&gt;\n&lt;tstamp&gt;&lt;format property=\"report.datestamp\" pattern=\"yyyy-MM-dd-HH-mm-ss\"\/&gt;&lt;\/tstamp&gt;\n&lt;property name=\"time\" value=\"${report.datestamp}\"\/&gt;\n\n&lt;!--  Diffrent version of Jmeter has its own ant-jmeter.jar,Please input the right versioin --&gt;\n&lt;path id=\"ant.jmeter.classpath\"&gt;\n&lt;pathelement location=\"${jmeter-home}\/lib\/ant-jmeter-1.1.1.jar\" \/&gt;\n&lt;\/path&gt;\n&lt;taskdef name=\"jmeter\"\n     classname=\"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask\"\n     classpathref=\"ant.jmeter.classpath\" \/&gt;\n&lt;!-- just to support foreach by ant --&gt;\n&lt;taskdef resource=\"net\/sf\/antcontrib\/antcontrib.properties\" &gt;\n&lt;classpath&gt;\n    &lt;pathelement location=\".\/libs\/ant-contrib-20020829.jar\" \/&gt;\n&lt;\/classpath&gt;\n&lt;\/taskdef&gt;\n\n&lt;!-- use this config to generate html report; if not, may not display Min\/Max Time in html--&gt;\n&lt;path id=\"xslt.classpath\"&gt;\n&lt;fileset dir=\".\/libs\" includes=\"xalan-2.7.1.jar\"\/&gt;\n&lt;fileset dir=\".\/libs\" includes=\"serializer-2.9.1.jar\"\/&gt;\n&lt;\/path&gt;\n&lt;!--\u8fd0\u884c\u4e4b\u524d\u9996\u5148\u521b\u5efa\u4e34\u65f6\u7ed3\u679c\u6587\u4ef6\u5939--&gt;\n&lt;target name=\"create-folder\"&gt;\n&lt;delete dir=\"${resultBase}\/temp\"\/&gt;\n&lt;mkdir dir=\"${resultBase}\/temp\/${results.jtl}\" \/&gt;\n&lt;mkdir dir=\"${resultBase}\/temp\/${results.html}\" \/&gt;\n&lt;\/target&gt;\n\n&lt;target name=\"all-test\" depends=\"create-folder\"&gt;\n&lt;foreach  param=\"jmxfile\" target=\"test\" &gt;\n    &lt;fileset dir=\"${jmxs.dir}\"&gt;\n        &lt;include name=\"*.jmx\" \/&gt;\n    &lt;\/fileset&gt;\n&lt;\/foreach&gt;\n&lt;\/target&gt;\n\n&lt;target name=\"test\" &gt;\n&lt;basename property=\"jmx.filename\" file=\"${jmxfile}\" suffix=\".jmx\"\/&gt;\n&lt;echo message=\"---------- Processing ${jmxfile} -----------\"\/&gt;\n&lt;echo message=\"resultlogdir===${resultBase}\/temp\/${results.jtl}\"\/&gt;\n&lt;jmeter jmeterhome=\"${jmeter-home}\" resultlogdir=\"${resultBase}\/temp\/${results.jtl}\" runremote=\"${runremote}\" resultlog=\"${jmx.filename}.jtl\"\n        testplan=\"${jmxs.dir}\/${jmx.filename}.jmx\"&gt;\n    &lt;jvmarg value=\"-Xincgc\"\/&gt;\n    &lt;jvmarg value=\"-Xms1024m\"\/&gt;\n    &lt;jvmarg value=\"-Xm1024m\"\/&gt;\n\n&lt;\/jmeter&gt;\n&lt;sleep seconds=\"20\"&gt;&lt;\/sleep&gt;\n&lt;!--Generate html report--&gt;\n\n&lt;xslt   in=\"${resultBase}\/temp\/${results.jtl}\/${jmx.filename}.jtl\"  \n        out=\"${resultBase}\/temp\/${results.html}\/${jmx.filename}.html\"  classpathref=\"xslt.classpath\"\n        style=\"${jmeter-home}\/extras\/jmeter-results-report_21.xsl\" &gt;\n    &lt;param name=\"dateReport\" expression=\"${report.datestamp}\"\/&gt;\n    &lt;param name=\"showData\" expression=\"n\"\/&gt;\n    &lt;param name=\"titleReport\" expression=\"${report.title}:[${jmx.filename}]\"\/&gt;\n&lt;\/xslt&gt;\n\n&lt;echo message=\"Sleep ${interval-time-in-seconds} Seconds, and then start next Test; Please waiting ......\"\/&gt;\n&lt;sleep seconds=\"${interval-time-in-seconds}\"&gt;&lt;\/sleep&gt;\n&lt;\/target&gt;\n\n&lt;target name=\"copy-images\" depends=\"all-test\"&gt;\n&lt;copy file=\"${jmeter-home}\/extras\/expand.png\" tofile=\"${results.html}\/expand.png\"\/&gt;\n&lt;copy file=\"${jmeter-home}\/extras\/collapse.png\" tofile=\"${results.html}\/collapse.png\"\/&gt;\n&lt;copydir src=\"${resultBase}\/temp\" dest=\"${resultBase}\/${report.datestamp}\"\/&gt;\n&lt;delete dir=\"${resultBase}\/temp\"\/&gt;\n&lt;\/target&gt;\n\n&lt;target name=\"all\" depends=\"all-test, copy-images\" \/&gt;\n&lt;\/project&gt;  \n<\/code><\/pre>\n<p><strong>jmxs<\/strong>\u6587\u4ef6\u5939\u5b58\u653ejmeter\u811a\u672c\uff0cant\u4f1a\u987a\u5e8f\u6267\u884c\u5176\u4e2d\u7684\u811a\u672c\uff0c\u6267\u884c\u7ed3\u679c\u4f1a\u653e\u5728<strong>results<\/strong>\u6587\u4ef6\u5939\u4e2d\uff0c\u5305\u542b\u7edf\u8ba1\u7684html\u6587\u4ef6\u548cjmeter\u7684\u8bf7\u6c42\u8be6\u7ec6jtl\u6587\u4ef6\u3002<\/p>\n<p>\u6700\u540e\u548cjenkins\u96c6\u6210\uff0c\u642d\u5efajenkins\u73af\u5883\uff0c\u5b89\u88c5<strong>Performance Plugin<\/strong>\u63d2\u4ef6\uff0c\u65b0\u5efa\u4e00\u4e2ajob\uff0c\u9009\u62e9\u76ee\u6807\u673a\u5668\uff08\u673a\u5668\u4e0a\u8981\u6709ant\uff09\uff0c\u586b\u597dsvn\u6216\u8005cvs\u3001\u5b9a\u65f6\u6267\u884c\u3001\u6784\u5efa\u547d\u4ee4\u7b49\u3002\u5728<strong>Add post-build action<\/strong><strong>\u4e2d\u53ef\u4ee5\u6dfb\u52a0\u4e00\u4e2a<\/strong>Publish Performance test result report\u7528\u6765\u6536\u96c6jmeter\u6d4b\u8bd5\u7ed3\u679c\uff0c\u9009\u62e9\u5c31meter\uff0c\u7136\u540e\u5728Report files\u4e2d\u586b\u5199<code>**\/*.jtl<\/code>\u5373\u53ef\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jmeter\u662f\u6027\u80fd\u6d4b\u8bd5\u7684\u5de5\u5177\uff0cjava\u7f16\u5199\u3001\u5f00\u6e90\uff0c\u5c0f\u5de7\u65b9\u4fbf\uff0c\u53ef\u4ee5\u56fe\u5f62\u754c\u9762\u8fd0\u884c\u4e5f\u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e0b\u8fd0\u884c\u3002\u7f51\u4e0a\u5df2\u7ecf\u6709\u4eba\u4f7f\u7528ant\u6765\u8fd0\u884c\uff0chttp:\/\/www.programmerplanet.org\/proj&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[34],"tags":[8,13,41],"class_list":["post-558","post","type-post","status-publish","format-standard","hentry","category-software","tag-java","tag-13","tag-41"],"views":10038,"_links":{"self":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=558"}],"version-history":[{"count":3,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/558\/revisions"}],"predecessor-version":[{"id":737,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/558\/revisions\/737"}],"wp:attachment":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}