利用Hudson构建Php持续集成
本教程所使用到的工具:
Hudson:https://hudson.dev.java.net/
介绍:持续集成工具
下载:http://hudson-ci.org/latest/hudson.war
备注:当然需要Java环境,JRE的安装方式就不说了,自己搜一下。
本文使用版本 Hudson ver. 1.320
Phing:http://phing.info
介绍:基于ant的项目构建系统。
下载:http://phing.info/trac/wiki/Users/Download
备注:本文使用版本 phing-2.3.3 。
Phing Plugin:http://wiki.hudson-ci.org/display/HUDSON/Phing+Plugin
介绍:为Hudson提供Phing支持的插件。
备注:Hudson插件列表里默认列出,安装方式在下面。
SVN:http://subversion.tigris.org/
介绍:版本控制工具
备注:教程较多不做详细介绍。推荐两个工具,都是傻瓜式安装的。
小乌龟:http://tortoisesvn.tigris.org/ 客户端
VisualSVN:http://www.visualsvn.com/ 服务器端
NetBeans:http://www.netbeans.org/
介绍:IDE,对PHPUnit有友好支持。
备注:构建PHPUnit环境参考下面PHPUnit的介绍。
Hudson Support:http://plugins.netbeans.org/Plug ... e.jsp?pluginid=2178
介绍:NetBeans Hudson支持插件。
备注:可以方便操作,不强制安装。
PHPUnit:http://www.phpunit.de/
介绍:PHP单元测试工具
参考:http://bbs.phpchina.com/viewthread.php?tid=104215
备注:这篇文章是NetBeans 7.0m1 刚发布时写的,现在的最新版本已经支持PHPUnit了,可以去下载 6.7.1。
操作过程:
1、创建可测试的工程:在NetBeans中新建项目,例如 HudsonPHP。新建一个Class文件(可直接使用 http://bbs.phpchina.com/viewthread.php?tid=104215 中的 PhpUnitSample )。
并按 工具 -> 创建PHPUnit测试 指定目录为 {$project}/test,内容可参考上文。
2、提供版本控制支持:新建的版本库HudsonPHP(我是用的是VisualSVN,不会的朋友去搜教程)。将操作 1 中的项目导入这个版本库(在NetBeans项目上右键Subversion)。
3、安装Hudson:运行Hudson可直接执行 java -jar hudson.war 也可以将其部署到Tomcat等容器内。操作方式网上教程较多,在此不再累述,关键词: war tomcat。
运行后默认端口是 8080 ,我在本地运行所以打开 http://localhost:8080/ 。
4、安装Hudson的Phing Plugin。按顺序点击 左侧的 Manage Hudson >> 右侧的 Manage Plugins >> Available 找到 Hudosn Phing plugin >> 按最下面的 install 。
Update Center [Hudson]_1250665207553.png
Update Center [Hudson]_1250665165273.png
安装后需要重启服务器:退到首页 >> Manage Hudson >> Prepare for Shutdown ;如不自动重启就手动把~在cmd里执行的就是接ctrl+c,再运行。
回到首页 左侧的 Manage Hudson >> Configure System >> Phing installation
我的设置:
name : Phing_2.3.3
PHING_HOME : E:\Tools\phing-2.3.3
PHP Command : E:\Tools\wamp\bin\php\php5.2.5\php.exe
注意:不需要使用pear方式安装phing,PHING_HOME就是你下载的Phing包直接解压后的目录,系统会识别出目录是否正确的。
PHP Command 就不多说了,就是php.exe的位置。
5、新建工作:Hudson左侧点击New Job ,Job name 设置成工程目录就可以了,不做特殊要求,例如 HudsonPHP。下面要选的应该是构筑方式或类型。
我们选择第二个(Build a free-style software project),点击 OK。
我们来到了配置页面,下面给出的是主要配置参数范例:
Source Code Management: 源码管理。
选择 Subversion ,在 Repository URL 填写版本库url 如 https://MoXie-PC:321/svn/HudsonPHP/trunk。
Repository browser:(auto) 这是默认的。
Build Triggers:构建触发配置。
选择 Poll SCM , Schedule 填: 50 * * * * 。意思是每50分钟自动执行。具体参数配置方式参考右侧问号内的帮助。
Build:构建方式
点击: Add build step,选择 Invoke Phing targets。配置如下:
Phing Version : 选择我们刚新增的 Phing_2.3.3
Targets:填写 test (就是项目测试文件目录)
点击Sava,基本配置就这些了。
HudsonPHP Config [Hudson]_1250673882462.png
6、Build脚本:在工程目录下新建文件 build.xml。内容如下:
CODE:
<?xml version="1.0" ?>
7、最终运行:左侧点击Build now,在左下就会看到进程条了。蓝色的气球就代表成功。
<project name="HudsonPHP" default="test">
<property name="tests.dir" value="test" />
<target name="test" description="Run PHPUnit tests">
<phpunit haltonerror="true" haltonfailure="true" printsummary="true">
<batchtest>
<fileset dir="${tests.dir}">
<include name="**/*Test.php" />
</fileset>
</batchtest>
</phpunit>
</target>
</project>
点入刚进行的Build #1,点击左侧 Console Output,可以看到整个执行过程。如下例:
CODE:
Started by user anonymous
Checking out a fresh workspace because C:\Users\MoXie\.hudson\jobs\HudsonPHP\workspace\trunk doesn't exist
Checking out https://localhost:321/svn/HudsonPHP/trunk
A PhpUnitSample.php
A test
A test\PhpUnitSampleTest.php
A nbproject
AU nbproject\project.properties
AU nbproject\project.xml
A index.php
AU build.xml
At revision 3
[trunk] $ cmd.exe /C '"E:\Tools\phing-2.3.3\bin\phing.bat -logger phing.listener.NoBannerLogger && exit %%ERRORLEVEL%%"'
Buildfile: C:\Users\MoXie\.hudson\jobs\HudsonPHP\workspace\trunk\build.xml
HudsonPHP > test:
[phpunit] Test: PhpUnitSampleTest, Run: 1, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00161 s
BUILD FINISHED
Total time: 0.9868 seconds
Finished: SUCCESS