Phing和PHPUnderControl有什么区别?

时间:2020-03-06 14:48:04  来源:igfitidea点击:

当前,我们使用手动滚动的设置和配置脚本以及手动滚动的持续集成脚本来构建和部署我们的应用程序。我正在考虑使用为此目的而设计的第三方系统来对此进行形式化。

我之前已经研究过Phing,但我发现它基本上就像Ant。但是,我的蚂蚁经验有限,因此对我没有太大帮助。 (我完成的大部分Java工作都只是作为jar文件部署)。

之前,我已经研究过Cruise Control,并且我了解phpUnderControl是CC的插件。但是,Phing说它也可以与CC合作。因此,我不清楚这里的重叠之处。我需要Phing和phpUnderControl才能与CruiseControl一起使用,还是它们互斥?

我确切需要的是可以做到的事情:

  • 从SVN签出源
  • 从SQL文件安装数据库
  • 从一系列模板和一个ini文件生成一些本地配置文件
  • 运行我们所有的单元测试(当前为ST,但易于转换为PHPUnit),如果任何测试失败,则向开发团队发送电子邮件(当然带有堆栈跟踪)
  • 生成应用程序的API文档并将其放置在某处
  • 运行测试覆盖率报告

现在,我们几乎以一种或者另一种形式拥有了所有这些。但是,最好将它们自动化并捆绑在一个过程中。

解决方案

我敢肯定,在我输入此字时,会有很多人会这样说,但是...

我知道这不是PHP,但我们发现Capistrano只是这种事情的工作。它确实是一款出色的软件。

phing几乎是用PHP编写的ant,其中phpUnderControl将对PHP项目的支持添加到CruiseControl,并在后端使用phing或者ant来解析build.xml文件并运行命令。

我刚刚设置了CruiseControl和phpUnderControl,它的运行一直很棒。它签出我的SVN,并在每次签入时通过phpDocumentor,PHP_CodeSniffer和PHPUnit运行它。由于它们全部基于build.xml文件,因此我们几乎可以通过它运行任何软件。

我们一直在使用Phing,并且安装它的成本非常低;即使我们不了解ANT,也非常容易学习。我在CruiseControl方面经历了非常糟糕的经历(不稳定会随机下降),所以我喜欢Phing的简单性。另外,它可以使用PHP轻松扩展(以防万一我们有一个自定义任务,而他们不支持这些任务)。