我需要参数化jenkins作业以运行X次

时间:2012-11-19 09:38:47

标签: ant command-line jenkins jmeter

我正在使用jmeter工具对N个用户进行压力测试。

我使用ant和jenkins自动化测试,我的构建文件被配置为运行目标,即jmeter脚本。

工作正常。

现在我正在尝试参数化jenkins,即尝试在运行时传递用户数“N”有没有办法完成它? 请指教。

Ant脚本:

<project basedir=".">
  <property environment="env"/>
  <property name="jmeter-home" location="D:/apache-jmeter-2.7"/>
  <path id="ant.jmeter.classpath">
    <pathelement location="${jmeter-home}/extras/ant-jmeter-1.0.9.jar" />
  </path>
  <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" classpathref="ant.jmeter.classpath" />
  <target name="clean">
    <delete dir="results"/>
    <delete file="jmeter.log"/>
    <mkdir dir="results/jtl"/>
    <mkdir dir="results/html"/>
  </target>

2 个答案:

答案 0 :(得分:1)

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build。您可以为作业定义参数。然后你只需要将它传递给和-Denv_entry =值(正常的JVM Sswitch,你可以在Jenkins的Ant步骤的高级设置中找到它),它可以将它传递给jmeter(参见这篇文章:http://jmeter.apache.org/usermanual/get-started.html#override

编辑: 您根本不在蚂蚁脚本中运行JMeter。所以一步一步:

  1. 使用以下代码调用您的ant脚本:-DTHREADS=value
  2. Ant脚本正确包含<property environment="env"/>
  3. 使用您的任务调用JMeter,并提供如下所示的JVM参数:
  4. <jmeter
        jmeterhome="c:\jakarta-jmeter-1.8.1"
        testplan="${basedir}/loadtests/JMeterLoadTest.jmx"
        resultlog="${basedir}/loadtests/JMeterResults.jtl">
      <jvmarg value="-Xincgc"/>
      <jvmarg value="-Xmx128m"/>
      <jvmarg value="-DTHREADS=${env.THREADS}"/>
    </jmeter>
    

    然后你将在JMeter中拥有一个系统属性。如果你想拥有一个JMeter属性,请使用-JTHREADS = $ {env.THREADS}。

    EDIT2: 加上这个:

    <taskdef name="jvmarg" classname="org.programmerplanet.ant.taskdefs.jmeter.Arg" classpathref="ant.jmeter.classpath"/>
    

    然后应该工作。

答案 1 :(得分:0)

我认为如果你没有尝试N次运行Jenkins作业,这会是一个更好的方法,但是将这个N参数传递给你的ant脚本(参见关于如何从jenkins将参数传递给ant的其他答案)并制作处理并行启动测试N次。