Continuous integration/Overhaul

Progress/documentation page for new Continuous Integration server to host CruiseControl & Jenkins on one server.

Test VM

Dependencies edit

Required base packages edit

All of the following packages are pulled directly from Ubuntu 10.04 LTS, not the Wikimedia repository:

  • ant
  • git-core
  • imagemagick
  • libapache2-mod-php5
  • mysql-server
  • php-apc
  • php5-cli
  • php5-curl
  • php5-gd
  • php5-intl
  • php5-mysql
  • php-pear
  • php5-sqlite
  • php5-tidy
  • subversion
  • sqlite3

Secondary packages edit

Jenkins is not shipped with Ubuntu and anyway, you want an up-to-date version. To do so we will add a new repository to the debian packaging system.

Firstly, you need to add Jenkins PGP keys to be able to authenticate downloaded packages. Do the following:

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

Then you can add the remote repository from which to fetch additional packages. Add the following to /etc/apt/sources.list

deb http://pkg.jenkins-ci.org/debian binary/

Then fetch the list of packages and request installation of the jenkins package:

apt-get update
apt-get install jenkins

PEAR packages edit

Must first set desired package stability to 'beta', using pear config-set preferred_state beta. The following channels must be added to a default pear install:

pear channel-discover pear.pdepend.org
pear channel-discover pear.phpmd.org
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com

Then do the following:

pear install pdepend/PHP_Depend
pear install phpmd/PHP_PMD
pear install phpunit/phpcpd
pear install phpunit/phploc
pear install PHPDocumentor
pear install PHP_CodeSniffer
pear install --alldeps phpunit/PHP_CodeBrowser
pear install --alldeps phpunit/PHPUnit

You now have PHPUnit installed entirely.

Jenkins plugins edit

(After installing Jenkins and starting it)

  • Checkstyle (for processing PHP_CodeSniffer logfiles in Checkstyle format)
  • Clover PHP (for processing PHPUnit code coverage xml output)
  • DRY (for processing phpcpd logfiles in PMD-CPD format)
  • HTML Publisher (for publishing the PHPUnit code coverage report, for instance)
  • JDepend (for processing PHP_Depend logfiles in JDepend format)
  • Plot (for processing phploc CSV output)
  • PMD (for processing PHPMD logfiles in PMD format)
  • Violations (for processing various logfiles)
  • xUnit (for processing PHPUnit logfiles in JUnit format)
wget http://localhost:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin checkstyle
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin cloverphp
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin dry
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin htmlpublisher
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin jdepend
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin plot
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin pmd
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin violations
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin xunit
java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart