我最近接管了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>
虽然有些命令是“移动”而不是“复制”。
事实上,这发生在脚本中的不同点,这表明这可能会导致超时,或者脚本无法访问脚本运行时系统使用的文件。但是,无论我何时将它设置为运行,我都无法成功执行。
错误消息在确定问题实际上并不是特别有用。谷歌搜索他们并不是特别有启发性。我不期待这个解决方案(虽然一个会很好) - 但是如果我能够在确定问题方面得到一些关于下一步的指示,那将会非常有用。
答案 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中不存在的属性的名称。只是在这里感受到直觉。