SVN Web开发工作流程

BBo*_*eld 23 php svn workflow

我已经阅读了有关此问题的SO中的许多问题,但我无法找到适合我们情况的任何好建议.我继承了这个工作流程,我正努力让它变得更好.

我们的设置

  • PHP代码库(特别是Kohana)
  • 代码库支持~60个站点,每个站点都有独特的模板(即60个QA [质量保证]域)
  • 每个站点都有不同资产和资源的A记录(即每个域的8个A记录)
  • 3位开发人员
  • 3位设计师
  • 开发人员拥有用于本地开发的VMware生产服务器映像
  • 设计师没有
  • 用于QA的共享物理开发服务器,提交后更新始终将此服务器保持在主干的当前HEAD
  • 生产服务器,根据实时功能更新为不同版本的混合和匹配

我们的工作流程

  • 开发人员在本地工作,直到完成给定功能,然后将整个功能提交到主干以进行内部QA.
  • 设计师只对CSS /图像/模板进行小的更改.他们直接提交trunk,QA自己的更改,并在他们的QA之后立即更新生产服务器上的相应文件.
  • 当功能准备就绪后,生产服务器将手动更新为与该功能相关的每个文件的正确版本号.有时这很简单,有时它非常毛茸茸(很多svn log调用寻找上游依赖).

我们的问题

  • 由于三个不同的开发人员正在处理需要不同QA数量的不同功能,我们发现自己会定期遇到上游依赖问题.
  • 在任何给定时间,我们都无法以编程方式确定生产服务器上的哪些功能以及哪些功能不是. svn status -u将告诉我们哪些文件不是最新的,但通常不是一个清晰的功能图片.

我知道的

  • 有一个生产部门可以减轻我们的一些问题.我们至少可以监控哪些功能被添加到生产中以及何时添加,尽管这不会解决上游依赖性问题.
  • 功能分支是一个选项,我们在过去尝试过.由于我们的软件每个分支需要60个QA域,因此我们遇到了流程管理问题.例如,为每个功能分支创建480个(每个域60个域x 8个记录)A记录.
  • 开发人员分支也是一种选择,但我们的功能QA时间有所不同.我不能肯定地说,在我需要提交其他内容之前,之前的功能将不在QA中.

上游依赖示例

  • 开发人员A在管理员和前端都添加了新的幻灯片功能.
  • 开发人员B在管理员和前端都添加了新的反馈功能.
  • 这两个功能都与位置模型/控制器逻辑交织在一起,因此对这些相关文件进行了更改以考虑这两个新功能.
  • 幻灯片放映功能进入QA,但受到某些发展监督或范围蔓延的影响.
  • 反馈功能进入QA并且没有问题.
  • 我们希望遵循时间表并将反馈功能推送到生产中,但我们无法直接执行,因为这两个功能都需要更改位置模型/控制器.也就是说,我们不能只做一个svn update file1 file2 file3.
  • 注意: 这是一个简单的例子,它可以通过进行一些反向合并来解决.我们的问题经常比这复杂.

多站点结构信息

  • 我们有许多预定义的结构主题,包括视图,图像,CSS文件,JS文件等.
  • 每个站点都分配了一个主题.
  • 出于品牌和可扩展性的原因,每个站点都可以使用自定义视图覆盖主题视图,或者包含其他特定于站点的CSS/JS文件.

我确信还有其他一些人在努力解决类似的问题,我希望能从互联网上的聪明人那里获得一些见解.如果我说的话似乎很清楚,请随时提问!

LLB*_*BBL 1

您的工作流程可以改进,以下是我的建议列表:

  • 开始使用 SVN 分支并定期发布构建/部署。
  • 弄清楚您的部署周期应该有多长,为质量检查留出时间。例如,如果您要每月发布一个版本,则需要 3 周的开发时间和 1 周的 QA 时间。三周后冻结该版本的开发,错误修复除外。
  • 为您的构建确定一个允许增长空间的编号方案
  • 利用票证系统(ActiveCollab、JIRA、Mantis ...等)并强制执行任何提交都必须与票证关联的规则。选择一个可以让您的提交自动显示在票证中的位置。
  • 如果您要在开始开发之前开始记录您的需求,请不要在票务系统中收集您的需求(看在上帝的份上)
  • 这样做将帮助您确定给定版本中有哪些功能。因此,请制作某种发行说明,其中包含票号列表或每个版本的票证的一般描述。
  • 将您的内部版本号嵌入到您的应用程序中,以便您可以跟踪任何给定系统上的部署。
  • 开始使用自动化测试工具 PHPUnit 进行单元测试,使用 Selenium 进行功能测试,通过降低日常更改引入新错误的可能性来加快 QA 并提高 Web 应用程序的质量/稳定性。
  • Hudson 和 Phing 可以成为自动化构建和自动化测试的救星。