在我的公司,我们有一组8个Web开发人员用于我们的业务网站(完全用PHP编写,但这无关紧要).小组中的每个人都在同时处理不同的项目,每当他们完成任务时,他们会立即部署它(因为这些天业务发展很快).
目前,开发发生在一个共享服务器上,所有开发人员都使用相同的代码库(使用RCS将文件"锁定"远离其他文件).部署到期时,更改的文件将复制到"临时"服务器,然后同步脚本将文件上载到我们的主Web服务器,从那里将文件分发到其他9台服务器.
很高兴,网络开发团队向我们寻求帮助以改进流程(在我们抱怨一段时间后),现在我们建立开发环境的想法如下:
一个带有虚拟目录的开发服务器,这样每个人都有自己的代码库,
SVN(或任何其他VCS)跟踪变化
用于测试保存最新签入代码的中央服务器
现在的问题是:我们如何设法将更改的文件部署到服务器而不会意外地从其他项目上传错误?我的第一个想法是简单地从存储库中导出最新版本,但这不能完全控制文件.
你是如何处理这种情况的?你有什么样的部署脚本?
(作为一项特殊挑战:该网站在过去十年中有机增长,因此项目不会分成小块,但一个特定功能的文件遍布目录树.)
Cassy - 在你完全按顺序完成源代码管理之前,你显然还有很长的路要走,但听起来你正在路上!
拥有单独的沙箱肯定会有所帮助.接下来确保网站始终只是从subversion清除特定版本,标签或分支.
我们使用git,但我们有类似的设置.我们使用版本号标记特定版本(在git中我们也可以为标记添加描述;适用于发行说明!)然后我们有一个脚本,任何有权访问"执行发布"的人都可以运行,需要两个参数 - 将更新哪个系统(数据中心,如果我们更新测试或生产服务器),然后是版本号(标签).
该脚本使用sudo然后在共享帐户中运行发布脚本.它会检查相关版本,最小化javascript和CSS 1,将代码推送到环境的相关服务器,然后重新启动需要重新启动的内容.发布脚本的最后一行连接到其中一个Web服务器并将错误日志添加到尾部.
在我们的 网站上,我们在每个页面底部包含一个html注释,其中包含当前服务器名称和版本 - 让您可以轻松查看"现在正在运行什么?"
1和一堆其他的内务管理任务......