php - 在 Hudson CI 上加速 PHP 持续集成构建服务器

标签 php continuous-integration hudson ci-server

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

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

以下是一些可能的瓶颈:

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

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

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

最佳答案

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

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

关于php - 在 Hudson CI 上加速 PHP 持续集成构建服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696629/

相关文章:

java - 无法删除 Hudson 中的工作区

java - 如何从另一个 java 类运行测试类

PHP 选择特定行

PHP:get_call_class() 与 get_class($this)

continuous-integration - TeamCity 构建项目编译错误

ios - 如何自动为 iOS 应用创建性能报告?

.net - 在 Release 中部署 PDB 文件

java - Hudson -CI 屏幕保护程序设置

php - 从 php 中的函数返回变量(返回无效)

PHP 正则表达式验证