我需要将站点进行版本控制,并设置持续集成环境


41

我是一名Drupal 6x项目的企业家,该项目起步时很小,不需要版本控制(针对每个开发人员),但是现在我坚信没有它是没有办法的。JIRA上有大量的文档,并且编写精巧的用户故事涵盖了所有内容。我阅读了一些有关如何完成此工作的信息,并提出了以下计划-

  1. 使用模块将站点代码与数据库分开
    1. 语境
    2. 特征
    3. 强壮有力的手臂
    4. 探查器
  2. 将代码放入SVN存储库中并创建一个暂存站点
  3. 在EC2生产服务器上创建登台服务器的镜像
  4. 创建Selenium测试,并使用Saucelabs在云上运行它们
  5. 使用Elastic Bamboo在JIRA Studio中创建构建工作流程以运行自动更新
  6. 使用Drush Make更新和安装配置文件
  7. 在生产服务器上运行更新(我不确定如何)

首先,我列出了约50个“功能”,每个功能都有其组成部分(视图,内容类型,模块等)。毫无疑问,这将是一个挑战,因为该站点包含大约十二个自定义模块和Web服务,更不用说另外十二个包含自定义代码的内容类型“应用程序”实例了(我想将其中大多数转换为可升级的视图或模块) 。好消息是该站点尚未投入生产,因此风险仍然有限。

有没有人有做类似事情的经验?我应该遇到什么陷阱和局限性?我将不胜感激任何有关改进/纠正上述计划的建议,或者您的专家可能为我提供的任何见解或建议。


这是一个非常有趣的问题。我也想在我的网站上实现这一点,但由于效率不高而放弃了。如果您要解决,请给我们您的意见。
Tivie 2011年

3
绝对是一个有趣的问题,但也很难回答。您要问多个问题,因此很难给您一个完整/最佳的答案。只是一个提示:恕我直言,没有任何项目对于版本控制而言太小。尤其是现在有了git这样的分布式VCS,将您的代码放在本地存储库中大约需要5s。另请参阅drupal.stackexchange.com/questions/316/…– Berdir 2011
6

回想起来,确实没有一个项目对于版本控制来说太小(如果我那时才知道的话)。我浏览了该链接,它提出了另一个重要的问题。如果要从其自己的git存储库中提取Drupal核心,是否应该将git用于Drupal项目而不是SVN?我们使用SVN的原因是因为JIRA Studio中对它具有本机支持,这对我们很重要,因为我们要使用JIRA的自动构建功能(Elastic Bamboo)。抱歉,有多个问题:-(
druflex 2011年

更新:经过代码审查后,确定项目中有很多自定义代码,使用功能很难真正导出这些代码。因此,我们面前的选择是-(1)按原样完成和发布,并使用适当的版本控制在D7中开始并行开发。这意味着以后要整理数据库。害怕。(2)重做D6中的基本功能,发布,然后进行持续集成。(3)重做D7中的基本功能,发布,然后进行持续集成。主要问题是这些选项中的每一个将花费多少时间。如果您是我,您会投票赞成什么?
2011年

Answers:


23

好的,我尝试一下:)我将无法完全回答您的问题,但是也许会给您一些有趣的提示。请注意,我的电话号码并非直接回复您的号码:)

  1. 正如我在评论中已经提到的那样,没有任何项目对于版本控制而言太小。我个人推荐Git。原因是它的速度非常快(git中的等待时间以毫秒为单位,而不是以秒为单位),并且功能众多。它可以是一个有点难以回暖,因为奇怪的名称和参数,但下面的文档解释了许多人的不错:http://www.eecs.harvard.edu/~cduan/technical/git/。另一个原因是drupal.org现在正在使用它,因此了解git将在您想贡献自己的知识时为您提供帮助(提供补丁,测试补丁,发布模块等)。

  2. 就是说,如果您出于某种原因想使用SVN(例如与计划使用的服务集成),那就去吧。SVN也可以正常工作,并且比没有源代码控制要好得多。(除非您询问Linus Torvalds ..)。此外,如果您改变主意,通常可以采用多种方法从一个VCS迁移到另一个。例如,SVN-> Git运行良好。

  3. 第三,逐步解决此问题。不要尝试一次做所有事情。给您(和您的开发人员)时间学习新工具。

  4. 从Drupal 6切换到Drupal 7并不是一件容易的事。特别是带有很多自定义代码。仅注意有大量的API更改和新概念(例如实体/现场系统),还有一点是许多贡献模块尚未完全准备就绪。

  5. 部署管理 Drupal的弱点之一,在Drupal 7中也没有太大改变。我们已经意识到了这个问题,人们正在努力为Drupal 8解决此问题:http : //groups.drupal.org / build-systems-change-management / cmi。功能等有帮助,但这不是灵丹妙药。并非所有内容都可以导出为功能。

  6. 还有一些用于部署暂存/生产站点的Drupal专用选项。万神殿(仍处于beta版)和Acquia Dev Cloud可能值得一试。

  7. 持续集成,自动化测试非常重要并且非常有用,也需要时间进行设置,编写测试等。此时您可能会或可能不会拥有的时间。但是特别是自动化测试是一个易于进行增量改进的领域。一旦建立了运行它们的环境,您就可以在时间允许的情况下编写越来越多的测试。

因此,这是我对注释中更新的问题的建议

按原样完成和发布,但是现在开始为Drupal 6使用VCS(版本控制系统)。为您的站点创建一个临时环境。查看正在使用的模块,并检查当时是否可以使用Drupal 7端口。不要低估将要花费的时间。从您认为会带给您最大收益/成本的方面开始,也要开始改善测试/部署过程。

您还可以创建更具体的后续问题或查找已经存在的问题。如您所见,即使仅对这样的问题给出一些提示也可能会变得很庞大,并且会花费很多时间。


非常感谢您提供如此全面的解答。我几乎完全决定了您的建议。甚至包括Git。我将JIRA从托管迁移到独立,因此可以使用Git插件。D6就是这样。立即发布当前版本,并开始使用尽可能多的现有代码并行地重新创建适当的最佳实践副本。再次感谢支持。干杯!
2011年

+1好的建议,内容全面,踏实而真实。您是根据经验说话。谢谢。
therobyouknow 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.