在我工作的公司,我们有一个非常复杂的开发环境。 我们的系统在多台服务器上运行,每台服务器填充不同的angular色并拥有自己的代码库。 每个angular色可能有多个实际服务器(例如,我们可能有2个消息传递服务器,3个存储服务器,1个Web服务器,1个数据库等)
到目前为止,服务器端开发人员一直在开发SVN,而其他开发人员一直在跟踪自己的代码。 每个人都通过FTP手动上传到正确的服务器。 这意味着,如果某人更改了邮件服务器的代码,则他需要手动将更改上传到2台或更多台服务器。
重要说明:并不是所有的服务器都在同一个LAN上。
我一直在考虑改变每个人的工作stream程,我想咨询一下最好的设置是什么。
我想有一个单一的SVN服务器(基本上打开服务器端svn给大家),并为每个“服务器angular色”有不同的存储库。 并且为每个存储库提交一个到该types的服务器的提交后,将在每个服务器上的工作副本上运行“svn update”。 (我宁愿将所有服务器angular色的代码放在单个存储库上,但是我将如何处理提交后的脚本?)
我的问题是这样的:a)这是最好的设置? b)你将如何实现提交后的脚本? 它将如何知道发送更新的服务器? c)什么是最好的方式来保证这一点(与多个开发人员)?
在此先感谢您的答复。 任何帮助和build议,非常感谢!
肯。
看完你的问题之后,我认为你正在寻找更多的是部署工具集而不是开发设置。 不pipe你select的方向如何,我认为你需要做的第一件事是获得源代码控制下的所有代码 。 如果不能对每个子服务进行版本pipe理,就无法合理地使用可靠的系统进行部署。 把所有的项目都放在一个SVN服务器上, 你需要一个庞大的项目来超越单一服务器的方法,并且使你能够轻松地在所有子项目中轻松地分发/标记发行版。
我build议您查看部署的专用工具,如Capistrano , Fabric或ControlTier 。 每个项目都有自己的长处和短处(Capistrano在Rails,ControlTier和Java等方面效果很好),你可能会发现最好的工具取决于你的子项目所用的语言。一个简单的post-commit钩子:
安全性很大程度上取决于业务需求。 在小商店里,我觉得给开发者“钥匙到城堡”,甚至把部署职责转给团队是没有错的。 如果您在开发人员无法访问生产数据的环境中工作,则需要devise一个可以触发部署的系统(通过签入或其他进程),但无法访问部署系统的身份validation本身。 如果您正在UNIX平台上运行,那么可以像生成用于部署的SSH密钥一样简单,只需将密钥交给负责部署的人员即可。