《php持续集成实践—慧聪社区组》由会员分享,可在线阅读,更多相关《php持续集成实践—慧聪社区组(11页珍藏版)》请在金锄头文库上搜索。
1、PHP 持续集成实践社区组1、什么是 php 持续集成持续集成是极限编程中提出的一项建议实践。 在开发阶段,对项目进行持续性自动化编译、测试 单元测试(Unit Test) 决定了持续集成的效果 PHPUnit Framework 反映项目健康状况,利于发现问题和改进 尽快的发现错误,减少重复工作,降低风险 自动化部署,有效提高工作效率2、需要的软件1. SonarSonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工
2、具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。最新版本:3.5.12. Sonar-ru
3、nnerSonar Runner 是最常用的分析客户端之一,可以对绝大多数类型的项目进行分析。最新版本:2.2其他常用的还有:Maven and Ant 先用 sonar-runner 做客户端,分析。没有问题了,在迁移到 jenkens 上。3. JenkinsJenkins,之前叫做 Hudson,是基于 Java 开发的一种 持续集成工具,用于监控秩序重复的工作,包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。4. Php 工具 PHPUnit ,是 PHP 中的单元测试利器 PHP Depend,是一个 PHP 中静态代码分析的工具。它可以用来检查你的PHP 项目中
4、的代码规模和复杂程度 PHPMD,这个工具能够探测 PHP 源代码中一些潜在的问题。 PHP_CodeSniffer,是一个 PHP 的代码风格检测器3、方式原理j e n k i n s s o n a rS o n a r 插件s v n 仓库下载最新版本调用 p h p 工具 报告规范这里没有用到 sonar-runner,sonar-runner 只是最为客户端调试时用到。4、软件安装1. Java&tomcat略。 。 。2. Sonar下载 Sonar 发布包,解压到本地磁盘路径下。http:/www.sonarsource.org/downloads/配置:Sonar 根目录/c
5、onf/sonar.properties一般需要配置以下属性 sonar.jdbc.url: 数据库连接地址 sonar.jdbc.driver: 驱动类 sonar.jdbc.user: 数据库用户名 sonar.jdbc.password: 密码启动:Sonar 根目录/sonar.sh start3. Sonar-runner 将下载包解压到一个本地路径下。 将解压路径设置为环境变量:SONAR_RUNNER_HOME 更改配置文件:$SONAR_RUNNER_HOME/conf/sonar-runner.propertiessonar.host.url=http:/192.168.24
6、0.3:9000sonar.jdbc.url=jdbc:mysql:/192.168.240.8:3306/sonar?useUnicode=truecharacterEncoding=utf8sonar.jdbc.driver=com.mysql.jdbc.Driversonar.jdbc.username=rootsonar.jdbc.password=hudongsonar.sourceEncoding=gb2312运行:在项目目录创建 sonar-project.properties,配置项目的信息# required metadatasonar.projectKey=php:phpd
7、emosonar.projectName=phpdemosonar.projectVersion=1.0# path to source directories (required)sonar.sources=/root/gaozc/phpdemo# The value of the property must be the key of the language.sonar.language=php#sonar.forceAnalysis=truesonar.phpPmd.skip=true#sonar.phpCodesniffer.skip=truesonar.phpDepend.skip
8、=true sonar.phpUnit.skip=truesonar.phpUnit.coverage.skip=true# To deactivate features related to unit tests execution and coverage#sonar.dynamicAnalysis=false# Encoding of the source files#sonar.sourceEncoding=gb2312执行:sonar-runner4. Jenkins Jenkins,是基于 Java 开发的一种持续集成工具。 下载 jenkins.war 将 jenkins.war
9、 文件放入 tomcat 下的 webapps 目录下,启动 jenkins 时,会自动在 webapps 目录下建立 jenkins 目录。访问,http:/localhost:8080/jenkins 。使用前需要先进行 jenkins 的配置,包括 jdk、sonar、email 、svn 、ant、maven等。5. Php 环境安装可参考:http:/docs.codehaus.org/display/SONAR/Installing+PHP+Environmenthttp:/ php:./configure -prefix=/usr/local/php -with-config-f
10、ile-path=/usr/local/php/etc -with-bz2 -with-zlib-dir -enable-mbstring -enable-exif -disable-ipv6 -disable-cgi -enable-sockets 然后用 pear 安装需要的工具:(如果没有 pear 可以手动安装)Phpunit:pear channel-discover pear.phpunit.depear channel-discover pear.symfony-pear install phpunit/PHPUnit-3.5.5PHP Depend:pear channel-d
11、iscover pear.pdepend.orgpear install pdepend/PHP_Depend-1.1.0PHPMD:pear channel-discover pear.phpmd.orgpear install -alldeps phpmd/PHP_PMD-1.3.2PHP_CodeSniffer:pear install PHP_CodeSniffer-1.3.25、持续集成1. 配置 jenkins在 jenkins 插件中心,安装 sonar 插件:系统配置里,配置 sonar 相关信息:2. 添加项目新建 job。连接 svn 部分:构建时调取 sonar 分析:3
12、. 构建项目列表:点击立即构建:4. 查看报告点击上图 sonar 按钮,去 sonar 服务端查看报告。整体仪表盘:错误对照:6、相关扩展除了数据库和 Web 应用外,Sonar 还有很重要的一部分客户端程序。客户端程序用于对具体的程序工具进行分析,不同的语言,不要的项目构建类型可以使用不同的客户端程序。Sonar 提供很多类型的客户端,可以根据项目构建类型选择最佳方案: Sonar Runner: 推荐默认客户端,如果你不知道选择哪个分析你的项目就是使用它把。. Maven: 如果项目 Maven 构建则推荐使用对于的 Maven 插件包; Ant Task:如果项目 Ant 构建则推荐;
13、.Jenkins 结合 sonar 目前我们只用了语法的检查。Jenkins 和 sonar 基于灵活的插件机制还有很多高级的功能,具体可以阅读官方文档。7、相关问题总结一下研究过程中遇到的问题,如下:1.分析报告在哪里?详细的报告在 sonar 里面,也可以通过插件设置查看(也可以用 eclipse 插件) 。目前我们的报告是直接从 sonar 里面查看。2.如果 jenkins 没有报告,那有什么用?jenkins 是持续集成的工具,build 用。在 php 中主要是下载最新的代码,然后定期调取 sonar 进行分析,进而生成报告。3.分析可以只用 sonar-runner 吗?可以。通
14、过 sonar-runner 客户端完全可以实现。只是没有持续、和自动性。安装过程中前期调试,一直用的 sonar-runner。4.现有的资料?研究过程中查看了以下相关 jenkins 的资料: maven+jenkins+sonar for java sonar 使用 ant+jenkins for php 竟然没有用到 sonar 需要建立好多 xml 文件(以及插件) ,包括单元测试和代码复杂度等检测。 phing+jenkins+php+sonar 这个说的太不清楚。5.可行性方案ant+jenkins+php 相关插件 +php 扩展*6.最后执行方案jenkins+sonar 插
15、件+php 环境+sonar7.php 工具安装在 jenkins 服务器上还是 sonar 服务器上?安装在 jenkins 上,即相对于 sonar 服务的客户端(jenkins 或者 sonar-runner 上)上。曾遇到的难解决问题?(1)php 分配的内存不足?修改 php.ini 即可。(2)系统内存不足,分析时间几个小时?去掉不需要分析的部分,分析部分代码。(3)遇到报错,但是一直未找到问题?sonar-runner 分析时可开启debug(sonar-runner -X)模式,可以清楚的看到错误的产生原因。最终还是内存不足问题导致。(4)添加抽奖项目一直报错,最后查出是因为,如果检查空的目录或者没有类的目录,会报空指针错误。8、参考资料PHP 项目持续集成_-_JenkinsIntegrating PHP Projects with JenkinsSonar 实战百度文库:http:/ 开发必备 PHP 持续集成工具介绍http:/ 作者:孔庆祝社区博客:http:/