0

我目前正在为我所在的项目构建一个持续集成框架,我想知道是否能够从脚本调用 svn 存储库,例如:

   <target name="test" depends="clean">
    <jmeter
       jmeterhome="${jmeter-home}"
       resultlog="results/jtl/JMeterTesting.jtl">
      <testplans dir="http://example/svn/repository" includes="/**/jmxFiles/*.jmx"/>
      <!--<testplans dir="${jtesting-home}" includes="/**/jmxFiles/*.jmx"/>-->
      <property name="jmeter.save.saveservice.output_format" value="xml"/>
      <property name="jmeter.save.saveservice.assertion_results" value="all"/>
      <property name="jmeter.save.saveservice.bytes" value="true"/>
      <property name="file_format.testlog" value="${format}"/>
      <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
      <property name="testData.fullPath" value="C:/TestData"/>
    </jmeter>
  </target>

因此它会在 .jmx 中查找 .jmx 文件http://exmaple/svn/repository

4

2 回答 2

4

为什么,是的,您可以从 build.xml 脚本调用 Subversion 存储库。这有几个问题:

  • 你如何得到你的 build.xml 脚本?这不是已经在存储库中了吗?您不必进行结帐即可获得构建脚本吗?
  • 如果您进行更新,并且构建脚本本身也更新了怎么办?
  • 您在构建中使用了什么版本?詹金斯跟踪的那个,还是你修改和更新的那个?Jenkins sill 说这个版本是用修订版 123456 完成的,但由于这些变化,它可能是修订版 123457 甚至可能是 123458。

最好在访问 build.xml 文件之前调用版本控制系统。幸运的是,Jenkins 让这变得非常非常简单。

如果您的构建过程需要 Subversion 版本号,可以从 Jenkins 的$SVN_REVISION环境变量中获得。

你可能会说,但是我想在我的版本控制系统中存储的是我构建的结果!. 答案:您不应该将构建结果存储在 Subversion 中。

一个问题是构建结果在版本控制系统中占用了大量空间。文件以增量格式存储。也就是说,仅存储版本之间的差异。您可以在文本文件中进行数千次更改,并且存储所有这些修订所需的空间量很小。二进制文件是不同的。它们占用了大量的空间。更糟糕的是,它们的使用寿命很短。一两年后,您的版本控制存储可以增长千兆字节,其中 90% 的存储专用于没有人需要的文件的二进制版本。

所以你会怎么做?您可以直接在 Jenkins 中存储构建结果。创建一个名为archive或 artifacts_ 的目录,并在那里复制您的构建结果。然后,配置您的 Jenkins 作业以将所有结果保存在此目录中。

如果您使用 Java 构建(我假设这是因为您在谈论 build.xml 文件),您可以使用 Maven 或 Ant 和 Ivy 将构建的 jar 文件存储到本地 Maven 存储库中。这样,这些 jars 可用于您的其他项目。同样,您不必将它们存储在版本控制系统中。


现在你的问题的实际答案......

有一项<svn/>任务,但大多数人发现它做得不太好。它依赖于 JavaHL 和 SVN C API。相反,他们只是使用<exec/>任务直接调用他们的 Subversion 客户端。

这里唯一的问题是 Jenkins 使用 SVNKit 并且不使用命令行客户端。确保 Jenkins SVNKit 构建工作目录与 SVN 命令行客户端的客户端版本相同。您可以在 Jenkins 系统配置中调整 SVNKit 客户端目录版本。

于 2013-09-09T14:43:15.783 回答
0

根据文档

testplans :当您要指定多个测试计划文件时,使用而不是 testplan 属性。此元素是标准 Ant FileSet 元素。

因此,您可以为此参数使用标准的 ant 文件集,但肯定不能使用 url。

我建议您在运行 jmeter 任务之前编写另一个 ant 任务来执行 svn checkout。看看这里,看看你如何做到这一点。

于 2013-09-09T14:15:57.337 回答