我已经阅读了许多关于此问题的SO(Stack Overflow)问题,但是我实际上找不到适合我们情况的好建议。我继承了这个工作流程,并且正在尝试使其更好。
我们的设置
- PHP代码库(特别是Kohana)
- 代码库为大约60个站点提供支持,每个站点都有独特的模板(即60个QA [质量保证]域)
- 每个站点都有不同资产和资源的A记录(即每个域名有8个A记录)
- 3个开发人员
- 3个设计师
- 开发人员在本地开发时拥有生产服务器的VMware映像
- 设计师没有
- 共享物理开发服务器用于QA,提交后更新始终将该服务器保持在主干的当前HEAD处
- 生产服务器,根据所使用的功能而更新到不同版本的混合和匹配版本
我们的工作流程
- 开发人员在本地工作,直到某个功能完成,然后将整个功能提交给主干进行内部QA。
- 设计师仅对CSS / 图像/模板进行小的更改。他们直接提交给主干,对自己的更改进行QA,并在通常情况下立即更新生产服务器上相应的文件。
- 当功能准备好上线时,手动将生产服务器更新为与该功能相关的文件的正确修订号。 有时这很简单,有时则非常复杂(需要大量的
svn log
调用以查找上游依赖项)。
我们的问题
- 由于三个不同的开发人员正在处理需要不同数量QA的不同功能,我们经常遇到上游依赖性问题。
- 在任何时间点,我们都没有办法以编程方式确定哪些功能已在生产服务器上,哪些功能尚未上线。
svn status -u
会显示哪些文件不是最新的,但这通常不是功能的清晰图像。
我所知道的
- 通过建立生产分支,我们可以缓解一些问题。 我们至少可以监控哪些功能已经添加到生产环境中以及何时添加,尽管这并不能解决上游依赖问题。
- 功能分支是一个选择,我们过去尝试过这样做。 由于我们的软件需要每个分支60个QA领域,因此我们会遇到一些流程管理问题。例如,每个特性分支都需要创建480个(60个领域×每个领域8条记录)A记录。
- 开发人员分支也是一种选择,但我们的功能QA时间各不相同。我无法确定之前的功能在我需要提交其他内容之前是否已经完成QA。
上游依赖性示例
- 开发人员A在管理界面和前端都添加了新的幻灯片演示功能。
- 开发人员B在管理界面和前端都添加了新的反馈功能。
- 这两个功能与Location模型/控制器逻辑交织在一起,因此对这些关联文件进行了更改以适应这两个新功能。
- 幻灯片演示功能进入质量保证阶段,但因某些开发疏忽或范围膨胀而被拖延。
- 反馈功能进入质量保证阶段,并且没有问题通过。
- 我们想按时间表推动反馈功能进入生产环境,但我们无法直接进行操作,因为这两个功能都需要更改Location模型/控制器。也就是说,我们不能仅通过
svn update file1 file2 file3
命令来完成。 - 注意: 这只是一个简单的示例,可以通过进行一些反向合并来解决它。通常我们的问题比这个复杂得多。
多站点结构信息
- 我们有许多预定义的结构主题,包括视图,图片,CSS文件,JS文件等。
- 每个站点都分配了一个主题。
- 出于品牌和可扩展性的原因,每个站点都可以使用自定义视图覆盖主题视图或包含其他特定于站点的CSS / JS文件。
我相信肯定有其他人也遇到了类似的问题,希望能从你们这些在互联网上聪明的人那里得到一些见解。如果我说的不够清楚,请随时提问!
svn up
操作,我可能会完全搞砸你的整个生产服务器。这是不好的。你应该随时能够从你的代码库中部署特定目录的最新版本并且使其正常工作。任何比这更复杂的东西都会导致过早的脱发(正如你所看到的)。我猜你的问题是如何实现这种状态? - deceze