5

我正在尝试加快我的构建速度,并正在寻找一些关于如何这样做的想法。我目前Hudson用作项目的持续集成服务器PHP

我使用Antbuild.xml 文件进行构建,使用类似于 Sebastian Bergmann 的php-hudson-template. 不过,目前(由于 Hudson 崩溃的一些奇怪问题),我只运行phpDocumentor,phpcpdphpUnit. phpUnit确实Clover也会生成代码覆盖率报告。

以下是一些可能的瓶颈:

  1. phpDocumentor:需要 180 秒。我的项目中有一些大型的包含库,例如awsninjaDirectedEdgeoauthsimplephpMailer. 我不确定我是否真的需要为这些开发文档。我也不确定如何使用我的 build.xml 文件忽略整个子目录。
  2. phpUnit:需要 120 秒。这是构建中唯一不作为parallelTask. 编写的测试越多,这个时间就会越长。真的不知道该怎么做,除了可能运行多个 Hudson 构建从站并向每个从站分发单独的测试套件。但我也不知道该怎么做。
  3. phpcpd:需要 97 秒。我确信我可以通过忽略那些包含的库来消除一些解析和转换时间。不确定如何在我的 build.xml 文件中执行此操作。
  4. 我的服务器:现在我正在使用单个 Linode 服务器。整个过程似乎对它产生了相当大的影响。

您能想到的任何其他可能的瓶颈我都会添加到列表中。

有哪些解决方案可以减少我的构建时间?

4

3 回答 3

2
  1. phpDocumenter: phpdoc -h reveals the -i option which allows you to specify a comma separated list of files/directories to ignore. This can be added to the arguments tag of your phpdoc build.xml tag

  2. phpUnit: I noticed it can be laggy if I am running tests against a database, but I am not aware of anyway to improve this.

One possible thing that might help would be to not run documenter every time and only run it as part of a build that only happens once a day (or something similar)

I just recently started using these tools and these are few things I discovered.

于 2010-09-13T00:34:28.207 回答
2

我根本不是 PHP 专家,但如果需要,您应该能够将 PHPUnit 测试拆分到多个 Hudson 从属服务器上。我只想拆分您的测试套件并将每个子集作为单独的并行 Hudson 作业运行。如果您有一台具有多个 CPU / 内核的机器,您可以在其上运行多个从站。

您没有提到的一件显而易见的事情 - 只是升级您的硬件,或者看看 Hudson 主机上正在运行的其他内容并可能占用资源怎么样?

于 2010-09-13T00:54:44.183 回答
0

当我们遇到类似的问题时,我们求助于在单独的夜​​间构建中运行文档(以及我们在 Selenium 中的功能测试脚本,因为这也很慢)。这样,我们的主要 CI 构建就不会因为生成我们的 API 文档而减慢。

但是,我注意到 PHP Documentor 现在已经更新到版本 2,它比缓慢的旧版本 1 有了显着的速度改进。看起来它比 v1 快了两到三倍。这将对您的 CI 流程产生重大影响。有关详细信息,请参阅http://phpdoc.org/

或者,您可以查看apiGenphpDox,它们都是 PHPDoc 的替代品。它们都绝对比 PHPDoc v1 快;我还没有将它们与 v2 进行比较。

于 2012-04-27T14:14:07.260 回答