环境:
JDK 1.7
SVNkit 1.8.10
Jenkins 1.5.77.
背景:
在windows slave上需要通过ant脚本从 svn checkout代码,使用svnant链接不上,报timeout。所以使用另外一种方式,用svnkit-cli。
准备工作:
需要将svnkit 1.8.10 release的jar包全部加载到classpath里(svnkit.jar, svnkit-cli.jar,svnkit-osgi-1.8.10.jar,svnkit-javahl16-1.8.10.jar以及从svnkit-dav-1.8.10.war中lib下的jar包)。
<path id="path.svnant">
<fileset dir="D:\Jenkins\tools\svnkit_1.8.0\lib">
<include name="*.jar" />
</fileset>
</path>
示例代码:
<target name="checkout_code">
<echo message="component svn commit..." />
<echo message="username = ${build_svn_userid}" />
<echo message="pasword = ${build_svn_password}" />
<echo message="resopsitory = ${repository_url}/${build_component_path}" />
<delete dir="${workspace.dir}/output/rfview" failonerror="falses" />
<echo message="checkout svn branch from HEAD" />
<java classname="org.tmatesoft.svn.cli.SVN" dir="${workspace.dir}/output/" fork="true">
<arg value="co" />
<arg value="--username" />
<arg value="${svn_userid}" />
<arg value="--password" />
<arg value="${svn_password}" />
<arg value="${repository_url}/${build_component_path}" />
<classpath refid="path.svnkit" />
</java>
</target>
<target name="commit_changes">
<echo message="begin to commit changes...." />
<java classname="org.tmatesoft.svn.cli.SVN" fork="true">
<arg value="commit" />
<arg value="--username" />
<arg value="${svn_userid}" />
<arg value="--password" />
<arg value="${svn_password}" />
<arg value="-m" />
<arg value='"commit message"' />
<arg value="${YOUR WOKING COPY DIR}" />---注意,这里应该是本地要提交的文件夹路径。
<classpath refid="path.svnkit" />
</java>
<echo message="component svn commit done." />
</target>
参考svnkit官网:http://www.svnkit.com/documentation.html