1

这是我的情况:

  • 视窗服务器
  • 阿帕奇
  • 巡航控制

我的 CruiseControl 部署脚本的最后一步将构建复制到 Apache 的 htdocs 文件夹中,在“演示”文件夹中(我相信这被称为“热部署”?)

一切都很好,花花公子,除了有时(不常见,但它发生得足以让我烦恼),演示文件夹不包含我构建的文件!旧的没有了,新的不在了,就这样消失了。

我的直觉是,如果我在网上有人下载文件时尝试覆盖文件,Apache 只是在下载完成后删除它?我不知道,这没有任何意义。

我到处寻找,甚至找不到任何提示......让我们看看这个 StackOverflow 社区到底有多好!:)

这是我的 ANT 脚本中的“部署”目标:

<target name="deploy" depends="revertVersionFile">
    <copy todir="${deploy.dir}">
        <fileset dir="${bin.dir}"/>
    </copy>
    <copy todir="${deploy.dir}">
        <fileset dir="${bin.dir}"/>
    </copy>
    <available file="${deploy.dir}/MockupsLive.swf" property="mockupsFile"/>
    <fail unless="mockupsFile" message="MockupsLive doesn't exist!"/>       
    <available file="${deploy.dir}/skins/sketch/sketch.swf" property="skinFile"/>
    <fail unless="skinFile" message="sketch.swf doesn't exist!"/>       
</target>   
4

3 回答 3

1

我建议在复制新文件之前创建旧文件的备份。用它们被替换时的时间戳命名旧文件。这样做,然后在下次失败时查看目录中的内容很可能会为您提供下一步查找的线索。

于 2008-10-03T16:02:53.843 回答
0

Apache 不会删除目录的内容。脚本中的某些内容正在删除内容是我的猜测。该脚本是否创建任何类型的备份?也许它将内容移动到备份文件夹,然后复制构建。

您可以为该文件夹添加一些安全性以防止其被删除。也许然后某个地方会弹出一个错误,让您了解什么是方便地删除目录。:) 我的猜测是它在脚本中。

于 2008-09-25T23:01:15.107 回答
0

我认为问题可能出在 CruiseControl 文件中。最有可能发生的事情是 CruiseControl 进程正在某处整理文件,但可能是由于文件锁定(可能由 Apache 锁定),它无法将文件写回该文件夹。

无论哪种方式,由于“部署”似乎是最后一步,之前的步骤可能会清除目录并且部署无法运行,在步骤结束时将您的文件夹留空。

于 2008-10-06T14:35:31.757 回答