在我工作的公司,我们有一个非常复杂的开发环境。我们的系统运行在多台服务器上,每台服务器扮演不同的角色并拥有自己的代码库。每个角色可能有多个实际服务器(例如,我们可能有 2 个消息服务器、3 个存储服务器、1 个 Web 服务器、1 个 DB 等)
到目前为止,服务器端开发人员一直在做 SVN,而其他开发人员一直在自己跟踪自己的代码。每个人都通过 FTP 手动上传到正确的服务器。这意味着,例如,如果有人更改了消息服务器的代码,他将需要手动将更改上传到 2 个或更多服务器。
重要提示:并非所有服务器都在同一个 LAN 上。
我一直在考虑改变每个人的工作流程,我想咨询一下最好的设置是什么。
我想拥有一个单一的 SVN 服务器(基本上向所有人开放服务器端 svn),并为每个“服务器角色”拥有不同的存储库。并将每个存储库的提交后提交到该类型的服务器,这将在每个服务器上的工作副本上运行“svn update”。(我宁愿将所有服务器角色的代码都放在单个存储库中 - 但我将如何处理提交后脚本?)
我的问题是:a) 这是最好的设置吗?b) 您将如何实现提交后脚本?它如何知道将更新发送到哪个服务器?c) 确保这一点的最佳方法是什么(与多个开发人员)?
预先感谢您的任何答复。非常感谢任何帮助和建议!
肯。
阅读您的问题后,我认为您正在寻找的更多是部署工具集而不是开发设置。无论您选择朝哪个方向发展,我认为您需要做的第一件事就是将所有代码置于源代码控制之下。如果不能对每个子服务进行版本控制,就不能合理地拥有任何可靠的部署系统。把所有的项目放在一个SVN服务器下就可以了;您需要一个大型项目来超越单服务器方法,它使您能够轻松地跨所有子项目轻松分支/标记发布。
我建议查看专门构建的部署工具,例如Capistrano、Fabric或ControlTier。每个项目都有其优点和缺点(Capistrano 与 Rails 配合良好,ControlTier 与 Java 配合良好,等等),您可能会发现最好的工具取决于您的子项目所用的语言。更喜欢部署系统的一些原因一个简单的提交后钩子:
安全性很大程度上取决于业务需求。在较小的商店中,我认为将“城堡的钥匙”交给开发人员甚至在团队中轮换部署职责并没有错。如果您在开发人员无法访问生产数据的环境中工作,您需要设计一个系统,他们可以在其中触发部署(通过签入或其他一些过程)但不能访问部署系统的身份验证本身。如果您在 UNIX 平台上运行,这可以像生成用于部署的SSH 密钥一样简单,并且只将密钥提供给负责部署的人员。