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
- ze stránek si stáhnete war file a buď ho spustíte přímo
java -jar hudson.war(potřebujete volný port 8080 a JDK 1.5+) - nebo provede instalaci do některého servlet serveru (Tomcat, Jetty, JBoss, …)
- potom už na http://localhost:8080 běží hudson
- pro php doporučuji nainstalovat tyto pluginy
Build
<?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
- Repository URL:
- 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
- Javadoc directory =
- 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






Nejnovější komentáře