5

描述你用来开发 Web 应用程序的过程,重点是 VC、错误跟踪、QA、单元测试、部署和其他类似的东西(减去计划/​​客户沟通方面的事情)。

我是这个领域的新手,所以我的粗略例子(阅读:没有使用过这个过程)无疑有点过时了,可以这么说 - 指出它的缺陷,以便我可以学习。

例如。

  1. 在本地 SVN 服务器上创建项目存储库。
  2. 为 DNS 映射创建批处理/shell 脚本。
  3. 签出项目,开始处理本地工作副本。
  4. 将功能开发为分支。
  5. 使用 Mantis 跟踪错误(通过其 SVN 集成链接提交错误(不知道是否存在))。
  6. 随手记录。
  7. 在分支上进行质量检查。
  8. 稳定时合并到主干。
  9. 单元测试?
  10. 当功能实现且稳定时提交到存储库。
  11. 将发布复制到存储库中的标签。例如。/项目/标签/rel-123/
  12. 使用 Phing 上传到登台服务器。(有人可以澄清一下登台服务器在“测试”之外的用途吗?)
  13. 使用 Phing 准备实时站点以进行更新、设置数据库/部署等。
4

3 回答 3

2
  1. 创建/签出 HEAD 版本(“主分支”)
  2. 至少每天开发代码并与主分支同步
  3. 开发完成后,编写并运行单元测试
  4. 通过代码审查并将代码/更改提交到主分支
  5. 让持续构建器在主分支上运行所有单元测试和系统/集成测试
  6. 准备就绪后,挑选修订版并将它们集成到 QA 分支
  7. 运行系统和集成测试,修复报告的错误,或根据需要回滚;这重复步骤 4-7
  8. 在 QA 签核后,将 QA 更改集成到发布分支
  9. 在发布分支上运行单元测试、系统/集成测试
  10. 部署到生产环境并运行健全性测试。

登台服务器是您的生产环境的副本,它尽可能是最新的。在我当前的项目中,我们能够使每个版本彼此独立,因此我们的“登台服务器”是我们的生产服务器,只是从不同的 url 访问。

注释和差异:

根据项目的大小,所有步骤都有一些变化。你的项目越大,樱桃采摘和环境分离的好处就越大。在较小的项目中,这些可能只是时间汇,并且经常被忽略或绕过。

澄清一下,有一个开发堆栈、QA 堆栈和暂存堆栈。根据您的项目规模,QA 可能是临时的,生产可能是临时的,或者它们的某种组合。Dev 和 QA 堆栈的分离是最重要的一个。

在上述步骤中,我假设代码和相关数据都被版本化或跟踪。拥有一个将控制数据考虑在内的发布和构建过程使发布变得非常非常容易。

在中小型项目中,可能有也可能没有发布分支;这取决于代码更改的频率。此外,根据代码更改的频率和项目的大小,您可以将完整的 QA 分支集成到发布分支,或者挑选特定的修订版以集成到发布分支。

FWIW,我发现“迁移脚本”没有什么价值。它们总是一次性的脚本,几乎没有重复使用,并且让回滚变得很痛苦。我认为更好的是,让应用程序向后兼容要容易得多。在几个版本之后(当回滚是可笑的时候),如有必要,应该进行数据清理。

于 2009-03-20T04:32:03.227 回答
1

非常粗略:

  1. 在 SVN 中创建存储库
  2. 将本地工作副本检查到开发人员环境
  3. 经常更新/提交更改
  4. 使用自定义部署脚本从 SVN 主干部署到阶段
  5. 舞台上的 QA 测试,报告 Mantis 中的错误
  6. 开发人员修复错误,标记为已解决
  7. 重新部署到阶段
  8. QA 测试错误,如果修复则关闭
  9. QA 完成,做回归测试
  10. 使用自定义部署脚本部署到生产环境
  11. 跳一段小舞

我们还为未来的版本或功能创建分支。这些最终被合并到主干中。

我们使我们的数据库结构与在部署期间执行的自定义数据库比较工具保持同步。

于 2009-03-19T11:12:57.630 回答
1

老帖子,但有趣的问题!

现在在我公司:

  1. 创建一个新的 Github 存储库
  2. 配置詹金斯
  3. 本地克隆
  4. 开始一个分支
  5. 开发和添加测试(服务器、客户端和 e2e)
  6. 提交每一步,并 fetch + rebase 以保持分支同步
  7. 准备好后,将分支推送到服务器:预提交检查 lint 和测试,如果不正常则阻塞
  8. 为分支创建拉取请求
  9. 在这里,jenkins 自动在分支上运行测试,并直接在拉取请求中将其标记为“绿色”或“损坏的测试”
  10. 让最后 2 位同事审查拉取请求并修复他们的发现(返回第 5 步)
  11. 当一切都绿色和 2 位同事都同意后,最后一位合并拉取请求
  12. 删除服务器上的分支
  13. 准备好后,推送新版本
  14. 最新版本立即部署在测试平台上
  15. QA 验证引入的更正和功能(如果有问题返回 5)
  16. (TODO)部署到具有与生产相同参数的预生产
  17. 部署到生产
  18. 为引入的错误向用户道歉;)并在问题管理器中报告它们
  19. 获取功能请求并在问题管理器中报告它们
  20. 在第 2 步重新启动循环
于 2014-02-28T15:34:29.703 回答