良好的Phing工作流程是什么样的?

时间:2011-10-16 19:32:16

标签: php continuous-integration phing

我正试图深入了解CI的心态,本周末一直在和Phing一起玩。这一切看起来都很直接,并且已经有很多例子了。

然而,让我感到困惑的是人们如何实际使用它。也就是说,我不是在寻找你做的测试,而是使用Phing建议的工作流程,在什么阶段你激活它,在开发周期的哪个阶段它会被采取行动。

例如,我们有几个网站,目前我们在本地编辑源代码并保存上传到实际网站(我知道这有多糟糕......),我们做了一些快速测试并确保代码按计划运行。如果是这样,我们承诺回购并继续进行。如果没有,我们可以回滚或编辑撤消和重新保存。虽然这看起来很疯狂,但简单性对我们来说效果很好。

我们现在有一个小团队,所以我试图将Phing推入这个过程,以获得lint / sniffing / mess检测e.t.c的所有额外好处。但是我无法确定事件的最佳顺序。

你会建议:

  • 在本地编辑代码。
  • 保存时将文件上传到测试站点。
  • 在登台服务器上测试网站。
  • 一切顺利,将更改提交给回购。然后运行phing。
  • 评估Phing的输出,根据需要更新代码,重新保存,重新提交,重新运行phing。
  • 假设Phing通过,因为我正在另一台服务器上运行phing,请执行svn导出并启动部署过程。

上面似乎有点长时间对我说。是不是因为看起来我正在尝试将测试部署与实时部署合并,让我感到困惑?

此外,提交似乎有点倒退,然后运行Phing,然后必须编辑并可能在重新尝试之前重新提交。

因此,它会更有意义:

  • 在本地编辑代码。
  • 保存,使用Phing执行测试部署构建。
  • 确保代码已通过所有代码检查e.t.c.
  • 使用Phing确保将代码复制到登台服务器。
  • 在登台服务器上测试网站。
  • 一切顺利,将更改提交给回购。
  • 然后使用Phing进行实时部署构建。

上面的问题是,假设我只想纠正硬编码到HTML页面的单词的拼写,看起来有点过分了吗?

最后,人们如何设置他们的服务器,你有一个服务器用于实时站点,一个用于登台,一个用于托管Phing(和任何CI软件)?

1 个答案:

答案 0 :(得分:6)

像Phing这样的工具就是自动化。所以,要回答这个“你在哪个阶段激活它,在开发周期的哪个阶段进行操作”,我会说你应该在你认为获得利益时立即把它带进来使用它。

例如,如果您有一个需要完成多个命令的进程,那么使用Phing(甚至只是一个shell脚本)来自动完成这些步骤会有好处,特别是如果有多个人需要做的话它或者它特别容易出错。

因此,你应该使用phing来让你的生活更轻松,而不是更难。任何涉及多个shell命令的任务,或者总是涉及输入具有大量难以记忆的参数的相同命令,通常是您可以/应该使用phing进行自动化。

考虑到你提到的第一个步骤列表,确实有点长篇大论。相反,您应该先使用phing来自动执行这些步骤:

  • 如果您有自动化测试,请使用phing来运行它们
  • 提交源代码管理
  • 使用phing部署代码
  • 使用phing进行svn导出或任何其他手动步骤

所以基本上我会做你在第二个清单中建议的内容。

您可能应该为单独的步骤制作phing命令,并使用于运行的phing命令可以一次性一起运行命令(例如,测试然后部署)。

如果您认为有必要,可以跳过阶段,例如您在更改一些文字时所给出的示例。

服务器的典型方法是在自己的服务器上安装实时站点,然后让登台/测试服务器尽可能地镜像它。对于CI或其他实用程序,您通常可以在登台服务器上托管它们,证明它们不会干扰您正在开发的主应用程序。