持续集成-能否从build.xml文件调用svn存储库?
我目前正在为我参与的项目构建一个持续集成框架,我想知道是否能够从脚本调用svn存储库,例如:持续集成-能否从build.xml文件调用svn存储库?,svn,maven,ant,jenkins,continuous-integration,Svn,Maven,Ant,Jenkins,Continuous Integration,我目前正在为我参与的项目构建一个持续集成框架,我想知道是否能够从脚本调用svn存储库,例如: <target name="test" depends="clean"> <jmeter jmeterhome="${jmeter-home}" resultlog="results/jtl/JMeterTesting.jtl"> <testplans dir="http://example/svn/repository
<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>
因此它在http://exmaple/svn/repository
根据:
testplans:当您想要指定多个测试计划文件时,使用而不是testplan属性。此元素是标准的Ant文件集元素
因此,您可以为这个参数使用标准的ant文件集,但肯定不能使用url
我建议您在运行jmeter任务之前编写另一个ant任务来执行svn签出。看看你是如何做到这一点的。根据:
testplans:当您想要指定多个测试计划文件时,使用而不是testplan属性。此元素是标准的Ant文件集元素
因此,您可以为这个参数使用标准的ant文件集,但肯定不能使用url
我建议您在运行jmeter任务之前编写另一个ant任务来执行svn签出。看看您是如何做到这一点的。为什么,是的,您可以从build.xml脚本调用Subversion存储库。这有几个问题:
- 如何获取build.xml脚本?这不是已经在存储库中了吗?您不需要签出来获取构建脚本吗
- 如果您进行了更新,而构建脚本本身也被更新了,该怎么办
- 您的版本使用了什么版本?詹金斯追踪的那个,还是你咀嚼并更新的那个?Jenkins sill说这个版本是用123456版本完成的,但是由于这些变化,它可能是123457版本,甚至可能是123458版本
$SVN\u REVISION
环境变量中获得
您可能会说,但我想在版本控制系统中存储的是我的构建结果!。答案是:您不应该将构建结果存储在Subversion中
一个问题是,构建结果在版本控制系统中占据了很大的空间。文件以增量格式存储。也就是说,只存储版本之间的差异。您可以在一个文本文件中进行数千次更改,并且存储所有这些修订所需的空间非常小。二进制文件是不同的。它们占据了大量的空间。更糟糕的是,它们的使用寿命很短。一两年后,您的版本控制存储可以增长千兆字节,90%的存储只用于没有人需要的文件的二进制版本
那你是做什么的?您可以将构建结果存储在Jenkins的内部。创建一个名为archive或artifacts的目录,并将构建结果复制到那里。然后,将Jenkins作业配置为将所有结果保存在此目录中
如果您使用的是Java构建(我认为这是因为您谈论的是build.xml文件),那么可以使用Maven或Ant和Ivy将构建的jar文件存储到本地Maven存储库中。这样,这些JAR就可以用于其他项目。同样,您不必将它们存储在版本控制系统中
现在你的问题的实际答案是。。。 有一种方法,但大多数人发现效果不太好。它取决于JavaHL和svncapi。相反,他们只是使用
任务直接调用Subversion客户端
这里唯一的问题是Jenkins使用SVNKit而不使用命令行客户端。确保Jenkins SVNKit构建工作目录与SVN命令行客户端的客户端版本相同。您可以在Jenkins系统配置中调整SVNKit客户端目录版本。为什么,是的,您可以从build.xml脚本调用Subversion存储库。这有几个问题:
- 如何获取build.xml脚本?这不是已经在存储库中了吗?您不需要签出来获取构建脚本吗
- 如果您进行了更新,而构建脚本本身也被更新了,该怎么办
- 您的版本使用了什么版本?詹金斯追踪的那个,还是你咀嚼并更新的那个?Jenkins sill说这个版本是用123456版本完成的,但是由于这些变化,它可能是123457版本,甚至可能是123458版本
$SVN\u REVISION
环境变量中获得
您可能会说,但我想在版本控制系统中存储的是我的构建结果!。答案是:您不应该将构建结果存储在Subversion中
一个问题是,构建结果在版本控制系统中占据了很大的空间。文件以增量格式存储。也就是说,只存储版本之间的差异。您可以在一个文本文件中进行数千次更改,并且存储所有这些修订所需的空间非常小。二进制文件是不同的。它们占据了大量的空间。更糟糕的是,它们的使用寿命很短。一两年后,您的版本控制存储可以增长千兆字节,90%的存储只用于没有人需要的文件的二进制版本
那你是做什么的?您可以将构建结果存储在Jenkins的内部。创建一个名为archive或artifacts的目录,并将构建结果复制到那里。然后,将Jenkins作业配置为将所有结果保存在此目录中
如果您使用的是Java构建(我认为这是因为您谈论的是build.xml文件),那么可以使用Maven