CruiseControl.Net Nant复制/移动失败错误

时间:2014-06-30 16:21:38

标签: cruisecontrol.net nant

我最近接管了Cruise Control持续集成服务器的责任,尽管我对Cruise Control或Nant知之甚少。但是,这就是生活。

这应该做的一个常规构建作业是执行一个Nant脚本,该脚本将文件和数据从一个活动服务器备份到备份服务器。我发现这已经失败了,因为用户界面会让我看到它。

错误消息始终相同:

Build Error: NAnt.Core.BuildException
Cannot copy '[filename].bak' to '[server]'.

但它并不总是在完全相同的位置失败。

正在执行的Nant脚本几乎是此副本代码的几次迭代:

<copy todir="${backup.root}\{dirname}">
    <fileset basedir="s:">
        <include name="**/*" />
    </fileset>
</copy> 

虽然有些命令是“移动”而不是“复制”。

事实上,这发生在脚本中的不同点,这表明这可能会导致超时,或者脚本无法访问脚本运行时系统使用的文件。但是,无论我何时将它设置为运行,我都无法成功执行。

错误消息在确定问题实际上并不是特别有用。谷歌搜索他们并不是特别有启发性。我不期待这个解决方案(虽然一个会很好) - 但是如果我能够在确定问题方面得到一些关于下一步的指示,那将会非常有用。

2 个答案:

答案 0 :(得分:1)

由于这是一个备份,您可以将复制任务设置为在发现故障时继续,直到您发现问题为止。显然你不想永久地离开它。

请参阅http://nant.sourceforge.net/release/0.85/help/tasks/copy.html

我会将verbose='true'failonerror='false'属性添加到复制任务中,看看是否有帮助。

根据您的方案设置overwrite也可能会有所帮助。

答案 1 :(得分:1)

首先将Nant部分提取到沙箱Nant文件并从命令行自行运行Nant,这样您就不必等到每天的计划备份时间进行测试。基本上设置测试平台以便于测试。

然后运行它,看看它失败了。然后缩短nant任务直到它工作,无论它做多少工作。现在你应该知道它首先导致失败的原因。专注于此。

我已经使用了相当数量的Nant并且:

无法复制&#39; [filename] .bak&#39;到&#39; [服务器]&#39;

让我觉得有些属性没有得到解决。为什么有人会命名文件[filename] .bak? &#39;文件名&#39;看起来像Nant中不存在的属性的名称。只是在这里感受到直觉。