2014-06-30 51 views
0

我最近接管了Cruise Control持续集成服务器的责任,尽管我对巡航控制或Nant知之甚少。但是,这就是生活。CruiseControl.Net Nant复制/移动失败错误

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

错误消息总是相同的:

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

但它并不总是以完全相同的点失败。

对正在执行的脚本南特是相当多的几个这个副本码的迭代:

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

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

这种情况发生在脚本的不同位置,这对我来说意味着这可能是超时,或者脚本无法访问脚本运行时系统使用的文件。但是我无论如何也无法通过成功的执行,无论我将其设置为运行的哪一天。

错误消息在识别问题实际上并不是特别有用。用Google搜索它并不是特别有启发性。我并不期待解决这个问题的办法(尽管一个人会很好) - 但如果我能够在确定问题方面能够找到接下来要看的地方,那将会非常有帮助。

回答

1

由于这是备份,因此您可以将复制任务设置为继续失败,直至找出问题。显然你不想永远离开它。

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

我想补充的verbose='true'failonerror='false'属性的副本任务,并看看是否有帮助。

根据您的情况设置overwrite也可能有所帮助。

1

首先将Nant部分解压缩为沙箱Nant文件,然后通过命令行自行运行Nant,因此您不必等到每天计划的备份时间才进行测试。基本上建立一个测试台以便于测试。

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

我用南特相当数量和:

无法复制“[文件名] .bak的”到“[服务器]”

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