【问题标题】:CruiseControl.Net Nant copy/move failure errorCruiseControl.Net Nant 复制/移动失败错误
【发布时间】:2014-07-10 04:40:33
【问题描述】:

我最近接手了 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> 

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

这种情况发生在脚本中不同点的事实向我表明,这要么是超时,要么是脚本无法访问脚本运行时系统正在使用的文件。但是,无论我将它设置为在一天中的什么时间运行,我都无法成功执行。

错误消息对于确定问题的实际情况并不是特别有帮助。用谷歌搜索它们并不是特别有启发性。我并不期望有一个解决方案(尽管一个会很好) - 但如果我能在识别问题方面获得一些关于下一步该看哪里的指示,那将非常有帮助。

【问题讨论】:

    标签: cruisecontrol.net nant


    【解决方案1】:

    由于这是一个备份,您可以将复制任务设置为在失败时继续执行,直到您发现问题为止。显然,您不想永久保持这种状态。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      让我觉得有些属性没有得到解决。为什么有人将文件命名为 [filename].bak? “文件名”看起来像 Nant 中不存在的属性的名称。这里只是凭直觉。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多