我一直在使用以下宏(如此处所建议的 svn 客户端 'svnkit' 不可用)让 Jenkins 从 subversion 存储库中的分支创建标签并且它一直工作正常。
<macrodef name="branch2tag">
<attribute name="src"/>
<attribute name="dest"/>
<sequential>
<java classname="org.tmatesoft.svn.cli.SVN" fork="true" classpathref="test.classpath.dep">
<arg value="--non-interactive"/>
<arg line="--username ${user}"/>
<arg line="--password ${password}"/>
<arg value="copy"/>
<arg value="@{src}"/>
<arg value="@{dest}"/>
<arg value="-m"/>
<arg value=""Created by Jenkins""/>
</java>
</sequential>
</macrodef>
几天前它开始抛出异常,我不知道为什么。
[java] May 27, 2013 11:41:46 AM org.tmatesoft.svn.core.internal.util.DefaultSVNDebugLogger log
[java] SEVERE: CLI: null
[java] java.lang.NullPointerException
[java] at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.copyWCToRepos(SVNCopyDriver.java:672)
[java] at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.setupCopy(SVNCopyDriver.java:621)
[java] at org.tmatesoft.svn.core.internal.wc16.SVNCopyClient16.doCopy(SVNCopyClient16.java:440)
[java] at org.tmatesoft.svn.core.internal.wc2.old.SvnOldRemoteCopy.run(SvnOldRemoteCopy.java:52)
[java] at org.tmatesoft.svn.core.internal.wc2.old.SvnOldRemoteCopy.run(SvnOldRemoteCopy.java:15)
[java] at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
[java] at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
[java] at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291)
[java] at org.tmatesoft.svn.core.wc2.SvnRemoteCopy.run(SvnRemoteCopy.java:227)
[java] at org.tmatesoft.svn.core.wc.SVNCopyClient.doCopy(SVNCopyClient.java:480)
[java] at org.tmatesoft.svn.cli.svn.SVNCopyCommand.run(SVNCopyCommand.java:99)
[java] at org.tmatesoft.svn.cli.AbstractSVNCommandEnvironment.run(AbstractSVNCommandEnvironment.java:142)
[java] at org.tmatesoft.svn.cli.AbstractSVNLauncher.run(AbstractSVNLauncher.java:79)
[java] at org.tmatesoft.svn.cli.svn.SVN.main(SVN.java:26)
[java] at org.tmatesoft.svn.cli.SVN.main(SVN.java:22)
[java] java.lang.NullPointerException
[java] at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.copyWCToRepos(SVNCopyDriver.java:672)
[java] at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.setupCopy(SVNCopyDriver.java:621)
[java] at org.tmatesoft.svn.core.internal.wc16.SVNCopyClient16.doCopy(SVNCopyClient16.java:440)
[java] at org.tmatesoft.svn.core.internal.wc2.old.SvnOldRemoteCopy.run(SvnOldRemoteCopy.java:52)
[java] at org.tmatesoft.svn.core.internal.wc2.old.SvnOldRemoteCopy.run(SvnOldRemoteCopy.java:15)
[java] at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
[java] at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
[java] at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291)
[java] at org.tmatesoft.svn.core.wc2.SvnRemoteCopy.run(SvnRemoteCopy.java:227)
[java] at org.tmatesoft.svn.core.wc.SVNCopyClient.doCopy(SVNCopyClient.java:480)
[java] at org.tmatesoft.svn.cli.svn.SVNCopyCommand.run(SVNCopyCommand.java:99)
[java] at org.tmatesoft.svn.cli.AbstractSVNCommandEnvironment.run(AbstractSVNCommandEnvironment.java:142)
[java] at org.tmatesoft.svn.cli.AbstractSVNLauncher.run(AbstractSVNLauncher.java:79)
[java] at org.tmatesoft.svn.cli.svn.SVN.main(SVN.java:26)
[java] at org.tmatesoft.svn.cli.SVN.main(SVN.java:22)
[java] Java Result: 1
我的第一个想法是检查托管 Jenkins 的服务器是否没有进行任何更改,因为在我看来 svnkit 找不到 subversion 可执行文件。但可执行文件可供 Jenkins 用户使用。
有人知道这可能是什么原因吗?