[dev] Jenkins on ci.horde.org got a major update

p at rdus.de p at rdus.de
Fri Nov 4 10:22:48 UTC 2011


The Horde continuous integration setup[1] saw a major upgrade and a number
of fixes during the last week.

The take home message for everyone that does not wish to read the full log:
ci.horde.org will now run horde/framework/bin/test_framework[2] after a new
commit has been pushed. This reduces the load on the system significantly
and you will get results faster. If you develop Horde code you should run
horde/framework/bin/test_framework[2] as well in order to check if your
recent commits could cause failures on our continuous integration server.

The full recap of the recent changes:

   * Update to the newest version of the Horde components tool. This allows
to use the improved templating system.
   * New configuration and build templates that allow to reduce the job
build time by avoiding to rebuild the set of package dependencies if this
is not necessary. This has an important implication: A code change in one
package (e.g. Horde_Imap_Client) will be tested against unchanged
dependencies (e.g. Horde_Mime). EVEN if the commit also touched one or
several of the dependencies (e.g. Horde_Mime). The packages should be
backward compatible - so this should result in no error. The dependencies
of one package will only get updated in case the dependency list in the
package.xml of that package changes.
   * Running horde/framework/bin/test_framework[2] has been integrated into
the horde-git[3] job. With the new "rebuild dependencies only when
necessary" policy (see above) the component jobs do not fully test the
integrity of the latest commit anymore. When the dependencies do not get
updated the focus of shifts a bit more towards checking for backward
compatibility. In order to not loose the integrity check for the "bleeding
edge" our test_framework script is now executed right after updating the
code from git.
   * Running test_framework also allows to run component jobs only if the
code of the component has actually been touched. This significantly reduces
the load on ci.horde.org as it removes the need for rebuilding all
components for each and every commit.
   * An update to the newer CodeSniffer[4] which included an update to the
checklist for the Horde style. The new ruleset[5] is available from our
horde-support[6] repository.
   * A customizable ruleset[7] for the PHP mess detector[8] has been added
as well. We still need to tweak the exact configuration of PMD to match it
with what we consider reasonable defaults for Horde code.
   * DocBlox[9] has been added to allow generating experimental API
documentation. DocBlox is significantly faster and less memory hungry than
PHPDocumentor. It has already been adopted by large frameworks such as
Zend. So I figured it is worth taking a look at it. Feedback welcome!
   * The Jenkins configuration has been updated with the latest fixes and
improvements from the Jenkins-PHP project[10].
   * The setup procedure has been fixed so that it should be possible to
generate a local setup - comparable to ci.horde.org[11] - again.



Links:
------
[1] http://ci.horde.org
[2] https://github.com/horde/horde/blob/master/framework/bin/test_framework
[3] http://ci.horde.org/job/horde-git/
[4] http://pear.php.net/package/PHP_CodeSniffer
[5]  
https://github.com/horde/horde-support/blob/master/ci/templates/pre-build/phpcs.xml
[6] https://github.com/horde/horde-support
[7]  
https://github.com/horde/horde-support/blob/master/ci/templates/pre-build/phpmd.xml
[8] http://phpmd.org
[9] http://www.docblox-project.org/
[10] http://jenkins-php.org/
[11] http://ci.horde.org/


More information about the dev mailing list