Domů > continuous integration > Hudson a PHP

Hudson a PHP

Hudson, extensible continuous integration engine

Hudson je obdoba CruiseControl a Xinc, ale oproti těm má jednu zásadní výhodu a to, že jeho vývoj jede poměrně slušným tempem a programátoři v Javě co znám ho používají. Pokud jsme chtěli mít jeden server, kde běží integrace pro Javu a PHP je podle mě v této době nejlepší sáhnout právě po Hudson.

Instalace

01_dashboard-hudson_1235663237019

Build

  • pro build jsem použil Phing, ale stejně můžete použít Ant
<?xml version="1.0" encoding="UTF-8"?>
<project name="start_page" basedir="." default="main">
<!-- $Id: build.xml 102 2009-02-26 14:39:10Z abtris $ -->
<property name="tmp" value="/tmp" />
<property name="wsname" value="source" />
<property name="package"  value="${phing.project.name}" override="true" />
<property name="builddir" value="${tmp}/build/${phing.project.name}" override="true" />
<property name="srcdir"   value="./src/" override="true" />

<!-- Main Target -->
<target name="main" description="main target">

<!-- Create dirs -->
<mkdir dir="${builddir}/reports"/>
<mkdir dir="${builddir}/reports/coverage"/>

<!-- PHP API Documentation -->
<phpdoc title="API Documentation"
destdir="${builddir}/apidocs"
sourcecode="yes"
defaultpackagename="StartPage"
output="HTML:Smarty:PHP">
<fileset dir=".">
<include name="*/*.php" />
</fileset>
</phpdoc>

<!-- PHP CodeSniffer -->
<exec command="phpcs --standard=ZEND --report=checkstyle ${ws}/${wsname}/src/ > ${builddir}/reports/checkstyle.xml" escape="false" />

<!-- PHPUnit -->
<exec command="phpunit --log-xml ${builddir}/reports/phpunit.xml --log-pmd ${builddir}/reports/phpunit.pmd.xml --coverage-clover ${builddir}/reports/coverage/clover.xml --coverage-html ${builddir}/reports/coverage/ tests/AllTests.php"/>

</target>
</project>

Příklad konfigurace

Project name
StartPage
Source Code Management
Subversion

  • Repository URL: https://localhost/svn/start_page/trunk
  • Local module directory (optional): source
  • Use update: true
Build
Execute shell

  • phing -f $WORKSPACE/source/build.xml -Dws=$WORKSPACE -Dtmp=$WORKSPACE
Post-build action
Publish Javadoc
  • Javadoc directory = build/start_page/apidocs/
  • Retain javadoc for each successful build = false
Publish JUnit test result report
Test report XMLs = build/start_page/reports/phpunit.xml
Publish Checkstyle analysis results
Checkstyle results = build/start_page/reports/checkstyle.xml
Publish PMD analysis results
PMD results = build/start_page/reports/phpunit.pmd.xml
Publish Clover Coverage Report
Clover report directory = build/start_page/reports/coverage/

Screenshots

V galerii jsou obrázky z Hudsona, nepřidal jsem obrázky, které vedou na dokumentaci v html formátu na code coverage report v html. Jsou tam jen výstupy, které zobrazuje Hudson nebo pluginy.

Závěr

Moje řešení není dokonalé, ale funkční a doufám, že to pomůže rozmnožit Hudson i mojo Java komunitu. Pokud Hudson pro PHP někdo použív budu rád, když se podělíte o zkušenosti v komentářích.

Categories: continuous integration Tags:

Switch to our mobile site