标签: phpundercontrol

为PHP项目设置部署/构建/ CI周期

我大部分时间都是单独的开发人员,从事一些大型的,主要是基于PHP的项目.我希望专业化和自动化如何处理代码库的更改,并创建一个持续集成过程,使过渡在团队中工作,而不必进行根本性的更改.

我现在正在做的是,我为每个项目都有一个本地测试环境; 我为每个项目使用SVN; 更改在本地进行测试,然后通常通过FTP传输到联机版本.API文档是从源代码手动生成的; 单元测试是我慢慢进入的,它还不是我日常工作的一部分.

我想象的"构建周期"将执行以下操作:

  • 在本地测试后,变更集将被检入SVN.

  • 我开始构建过程.SVN HEAD修订版将被检出,必要时进行修改,并准备上传.

  • API文档会自动生成 - 如果我还没有详细设置,使用默认模板,扫描整个代码库.

  • 新修订通过FTP部署到远程位置(包括一些目录重命名,chmodding,导入数据库,和喜欢.)这是我已经喜欢phing非常多,但我很开放的,当然选择.

  • 运行驻留在预定义位置的单元测试.我被告知他们使用电子邮件,RSS或(最好)HTML输出的失败或成功,我可以抓取并放入网页.

  • (可选)预定义位置的最终用户"changelog"文本文件使用提交消息的预定义部分进行更新("现在可以同时过滤"foo"和"bar"此消息不一定与SVN提交消息相同,后者可能包含更多内部信息.

  • 像代码指标,代码样式检查等等东西现在不是我的主要关注点,但从长远来看,它们肯定会.带来这种开箱即用的解决方案非常受到关注.

我在寻找

  • 来自或处于类似情况的人的反馈和经验,并已成功实施此解决方案

  • 特别是,关于如何设置它的好的分步教程和演练

  • 提供尽可能多的自动化的解决方案,例如为每个新项目创建框架API,测试用例等.

并且

  • 产品推荐.到目前为止,我所知道的是用于构建的phing/ant,以及用于报告部分的phpUnderControlHudson.我尽可能地喜欢它们,但我当然没有详细的经验.

忙于工作,所以我倾向于简单的解决方案.另一方面,如果缺少一个功能,我会因为它太有限而哭泣.:)欢迎使用点击式解决方案.我也是可以使用PHP项目的商业产品推荐.

我的设置

我在本地工作Windows(确切地说是7),大多数客户端项目都在LAMP堆栈上运行,通常在共享主机上运行(=没有远程SSH).我正在寻找可以在我自己的环境中运行的解决方案.我准备为此设置一个Linux VM,没问题.托管解决方案对我来说很有意思,只要它们提供了所描述的所有方面,或者足够灵活,可以与流程的其他部分进行交互.

赏金 我接受了我觉得会给我最多里程的答案.这里有很多很棒的输入,我希望我能接受不止一个答案.感谢大家!

php phing continuous-integration phpundercontrol

198
推荐指数
4
解决办法
4万
查看次数

如何解决此错误:"无法找到类PHPUnit_Extensions_SeleniumTestCase"

我正在尝试使用phpunit运行SeleniumTestCase,但我无法使用phpunit.bat脚本运行它.

我的目标是在CruiseControl和phpUnderControl中使用带有Selenium RC的phpunit.这是测试的样子:

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser('*firefox');
        $this->setBrowserUrl('http://www.example.com/');
    }

    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}
Run Code Online (Sandbox Code Playgroud)

我还在include_path中添加了PEAR,并在Selenium扩展中安装了PHPUnit.我用pear安装程序安装了这些,所以我猜这不是问题所在.

任何帮助将非常感谢.

谢谢,雷米

selenium phpunit unit-testing cruisecontrol phpundercontrol

13
推荐指数
3
解决办法
2万
查看次数

PHPUnit和CRAP索引

我正在使用php undercontrol和代码浏览器报告每个setter/getter上的一些CRAP索引错误,即这样的代码

public function getFoo()
{
    return $this->_foo;
}
Run Code Online (Sandbox Code Playgroud)

getter/setter由单元测试覆盖,复杂性为none,因为没有if/for/switch/foreach.那么为什么我得到该代码的CRAP索引为1?

PS:自我回答可能是因为复杂性没有,但我的主要问题是每个getter/setter因为CRAP索引而生成警告所以无论如何都要告诉phpunit/php代码覆盖率使CRAP等于0表示功能具有0复杂度指数.

php phpunit metrics phpundercontrol

13
推荐指数
1
解决办法
1万
查看次数

如何为php代码嗅探器调用自定义ruleset.xml

我正在尝试为php代码嗅探器编写自定义ruleset.xml,但是从命令行调用它而不将其放在默认文件夹中似乎不起作用.

由于文件似乎陈述,否则我想问我在这里做错了什么

:~/$ phpcs --standard=/home/edo/custom_ruleset.xml source/
===>
ERROR: the "/home/edo/custom_ruleset.xml" coding standard is not installed.
The installed coding standards are PEAR, PHPCS, Zend, Squiz and MySource
Run Code Online (Sandbox Code Playgroud)

如果这不起作用:有关如何使用您的来源发送您自己的编码标准的任何建议?谢谢

php phpundercontrol codesniffer

12
推荐指数
1
解决办法
8245
查看次数

phing和phpUnderControl ...一起工作

有没有人让这些无缝合作?我试过,在http://phing.info/trac/wiki/Users/Documentation/CruiseControl上使用插件取得了一些成功,但未能:

  • 使指标图表正常工作(不显示任何内容)
  • 启用"PMD" - 项目混乱检测 - 报告

除了我的phing构建脚本之外,是否还必须(可以)运行任何其他特定于Ant的命令?

此外,报告部分的首页转储了一堆日志信息,我也试图摆脱它.

为任何帮助干杯......我们正在运行phing 2.3.0和phpUnderControl 0.4.7.

保罗

php phing phpundercontrol

8
推荐指数
1
解决办法
874
查看次数

PhpUnderControl持续集成设置中的Git日志错误

所以我为我的PHP项目设置了以下内容:

  • 包含所有代码的Git存储库.
  • 一个Cruisecontrol实例,其上运行PhpUnderControl.

我在cruisecontrol项目目录中创建了一个新项目,并设置了一个轮询器,每2分钟检查一次git repo上的更改.我在这个Cruisecontrol实例中运行了2个项目,我设置的第一个项目运行得很好.

我在Platform项目中遇到的问题在错误日志中如下所示:

2010-02-04 06:07:27,076 [Thread-14061] INFO  Project           - Project platform:  bootstrapping  
2010-02-04 06:07:27,077 [Thread-14061] INFO  ProjectController - platform Controller: build progress event: bootstrapping  
2010-02-04 06:07:27,496 [Thread-14061] INFO  GitBootstrapper   - Already up-to-date.  
2010-02-04 06:07:27,500 [Thread-14061] INFO  Project           - Project platform:  checking for modifications  
2010-02-04 06:07:27,500 [Thread-14061] INFO  ProjectController - platform Controller: build progress event: checking for modifications  
2010-02-04 06:07:27,583 [Thread-14063] WARN  Git               - warning: Log for '' only goes back to Tue, 26 Jan 2010 13:43:11 -0500. …

git continuous-integration cruisecontrol phpundercontrol

8
推荐指数
1
解决办法
852
查看次数

Phing,Xinc或phpUnderControl - 哪一个会持续?

我仍然在研究应该使用哪种工具.当我四处寻找时,我注意到他们中没有一个真的有任何新版本:

Xinc
Version 2.0.1 released 02/05/08
Phing
Version 2.3.3 released 12/07/08
phpUnderControl
Version 0.4.4 released 08/09/08
Run Code Online (Sandbox Code Playgroud)

我应该选择phpUnderControl,因为它有最新版本,开发可能还会继续吗?我不想仅仅因为php 5.3附带的某些功能无法由其中一个处理而在半年内切换.

我需要PHP Unit,SVN和Codesniffer支持.

php phing xinc phpunit phpundercontrol

6
推荐指数
2
解决办法
1712
查看次数

phpUnderControl和CodeBrowser

phpUnderControl有内置的代码浏览器吗?如果是这样,我如何更改它以使用PHP_CodeBrowser?

php phpunit phpundercontrol php-codebrowser

5
推荐指数
1
解决办法
1463
查看次数

你如何管理你的构建[使用Phing]流程?

我正在尝试使用Phing进行自动化:

  • 运行测试
  • 在每台开发者机器上运行数据库迁移[使用dbdeply]
  • 在需要时部署到生产

我认为在我的项目中添加一个构建文件夹并将所有构建配置文件和db deltas放在该文件夹中是有意义的.并将所有这些提交到SVN存储库中.所以每个开发人员在从svn签出时都会获得更新的构建文件.并能够运行构建以使用新更改更新其数据库.

在生产服务器上:我打算在那里添加另一个构建文件,以获取svn中的最新Tagged版本并执行CSS和JS压缩.


我计划使用PHPUnderControl实现持续集成,因此我可以跟踪每个构建的结果,并在构建失败时收到通知.

所以,你认为这一切都有意义,或者你还有其他更好的建议吗?

php phing continuous-integration build phpundercontrol

4
推荐指数
1
解决办法
1212
查看次数

PHPUnit 的代码覆盖率

我在尝试确定我们网站上的代码覆盖率时遇到了一个问题。在我们的三个应用程序上运行我们的单元测试时,我让 PHPUnit 生成了一个 html 代码覆盖率报告。我们有一个公共应用程序、一个管理应用程序和一个报告应用程序。由于应用程序共享代码,我想以某种方式将它们组合成一份代码覆盖率报告。

似乎代码覆盖率仅计算测试“接触”的文件的覆盖率,因此计算中没有使用完全未经测试的文件。有谁知道如何将这些未使用的文件拉入计算中?有没有办法告诉覆盖率生成器使用某些目录进行计算,以便它拉入未触及的文件?我在配置文件中为 phpunit 设置了一个白名单,该白名单设置为我们项目的根目录。欢迎所有评论,答案和建议。

php phpunit code-coverage phpundercontrol

4
推荐指数
1
解决办法
1万
查看次数

phpUnderControl和PHPUnit总是使用代码255进行构建失败

build.xml在phpUnderControl中设置了以下文件.

    <target name="phpunit">
    <exec executable="phpunit" dir="${basedir}/httpdocs" failonerror="on">
        <arg line="--log-junit ${basedir}/build/logs/phpunit.xml
                --coverage-clover ${basedir}/build/logs/phpunit.coverage.xml
                --coverage-html ${basedir}/build/coverage
                --colors
                ${basedir}/httpdocs/qc/unit/CalculatorTest.php" />
    </exec>
</target>
Run Code Online (Sandbox Code Playgroud)

出于某些未知原因,构建总是失败并显示以下消息.

phpunit:
 [exec] PHPUnit 3.4.15 by Sebastian Bergmann.
 [exec] 

BUILD FAILED
/opt/cruisecontrol-bin-2.8.3/projects/citest.local/build.xml:30: exec returned: 255
Run Code Online (Sandbox Code Playgroud)

我在单元目录中手动运行非常简单的单元测试,PHPUnit返回.

PHPUnit 3.4.15 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.25Mb

OK (1 test, 1 assertion)
Run Code Online (Sandbox Code Playgroud)

当所有测试都没问题时,有谁知道它为什么一直失败?

我的构建脚本确实有一个删除和记录文件的干净方法,所以不是这样.我还手动删除了日志文件,以防它是该脚本.并更改了日志目录的所有者,以便它们可写.

如果它有任何不同,运行PHPUnit后phpunit.xml为空.

谢谢.

更新:顺便说一句,如果我删除failonerror="on"它的工作,显然,但PHPUnit仍然返回255,我确实希望它失败任何错误,问题是没有任何错误,但它仍然失败!

phpunit cruisecontrol phpundercontrol

3
推荐指数
1
解决办法
4505
查看次数

为什么要使用PHP项目和phing的"build /"文件夹

使用"build /"文件夹可以放置和"构建"所有源代码有什么好处?

也许这是一个愚蠢的问题,但我正在尝试理解与PHP的持续集成.用于phing的build.xml的任何示例都使用这样的构建/文件夹,但是对于PHP来说有一点意义,其中签出的项目不需要编译,只需要基本配置.复制所有到构建/只会复杂的事情,因为你已经翻番文件和文件夹+1到Web根路径(如果你想有web用户界面来运行Selenium测试)

特别是我需要phing两种情况:
1)让新用户设置他的第一次安装(或更新旧),正确的工作副本
2)运行unit/func-tests,phpcc,phpcs,phpdoc等(通常在CI服务器上) )

我应该为第二项任务"建立/"吗?PHP的最佳实践是什么?

php phing continuous-integration phpundercontrol

2
推荐指数
1
解决办法
576
查看次数