作为我们开发工作流程的一部分,我们希望我们的构建服务器将我们编译的二进制文件和其他构建工件发布到某个基于 LAN 的复制文件系统。理想情况下,我们只需让构建服务器根据构建版本将构建工件放入文件夹中,然后该文件夹的内容将在本地复制到每个开发人员工作站。一旦发布,每个构建都是静态的,不会发生变化。我们对一致性的要求并不高,我们只需要文件在一分钟左右的时间内在每个开发人员工作站上可用。所有机器都是基于 Linux 的。
最简单的解决方案可能是使用 rsync+cron 的 NAS,但感觉很笨重。是否有其他分布式/复制文件系统支持上述要求?我们考虑过使用 Amazon S3 + s3fs,但速度太慢了。
在许多方面,这感觉就像来自 Web 服务器场景中的权威源的传统镜像,例如 www1、www2 等。
答案1
如果你只需要单向复制,你真的不需要分布式文件系统。这引入了一个很多复杂性的增加而没有任何好处。我会选择 rsync 方法。如果构建成功,则将构建脚本中的最后一步推送工件。如果您不想将其作为构建脚本的一部分,您可以使用 cron 以一定的时间间隔执行此操作,或者同步 在创建或修改文件时执行此操作。
答案2
答案3
我还建议研究使用分布式版本控制系统(例如)来解决这个问题git
。您可以使用提交钩子让每个人都了解最新情况,而通过不在文件系统级别执行此操作而获得的独立性将为您节省很多可靠性问题。您甚至可能会发现在整个过程中对内容进行版本控制的其他优势。