This is part one of a multi part series where I intend to cover the installation of Jenkins and several PHP tools to use for continuous integration. Along with the configuration of Jenkins and setting up a project and the build xml. This tutorial covers all of these steps in an Ubuntu 12.04 environment.
In this part of the series I will cover installing the following software and tools:
- PHP 5.4
- PHP Code Browser
- PHP Code Coverage
- PHP Code Sniffer
- PHP Copy Past Detector
- PHP Documenter 2
- PHP Lines of Code
- PHP Mess Detector
- PHP Unit
- Simple Test
- XML Lint
Installing PHP 5.4 and Pear
Ubuntu 12.04 by default installs PHP 5.3, so we will need the PPA repository where PHP 5.4 is available from. To do this, we will use the add-apt-repository tool. First we will need to install this tool and then add the repository.
Adding the tool
$apt-get install python-software-properties
Adding the repo
Installing PHP 5.4, PHP5.4 dev tools, and pear
$apt-get install php-pear php5-cli php5-common php5 php5-dev
Installing Ant, XSL, XML Lint, and XDebug
Ant will be used to run our build script later. XSL and XDebug will be used by PHPUnit. XML Lint will be used to format our reports created by SimpleTest.
To perform the installation of these tools, run the following command.
$apt-get install ant php5-xsl php5-xdebug libxml2-utils
Installing the PHP Tools
Setting up Auto Channel Discovery
$pear config-set auto_discover 1
PHP Code Browser
$pear channel-discover pear.phpqatools.org $pear install phpqatools/PHP_CodeBrowser $pear install pear/Text_Highlighter-beta
PHP Code Coverage
$pear install pear.phpunit.de/PHP_CodeCoverage
PHP Code Sniffer
$pear install --alldeps PHP_CodeSniffer
PHP Copy Paste Detecter
PHP-CPD requires the ConsoleTools from ezComponents, so let us take care of that first
$pear channel-discover components.ez.no $pear install ezc/ConsoleTools
Now we can install PHP-CPD
$pear install --alldeps pear.phpunit.de/phpcpd
PHP Documenter 2
To use the inheritance chart feature, you’ll need to install GraphViz like so (this is not needed, but it’s nice)
$apt-get install graphviz
Now we can install PHP Documenter 2 after discovering its channel
$pear channel-discover pear.phpdoc.org $pear install --alldeps phpdoc/phpDocumentor-alpha
PHP Lines of Code
$pear install --alldeps pear.phpunit.de/phploc
PHP Mess Detector
To install PHP-MD, we first need to install imagemagick and libmagickwand-dev to take care of the dependencies for imagick.
Installing imagemagick and libmagickwand-dev
$sudo apt-get install imagemagick libmagickwand-dev
Currently the stable version of imagick does not support PHP 5.4, so we need to grab the RC version by doing the following
$pecl config-set preferred_state beta $pecl install imagick $pecl config-set preferred_state stable
Now we can install PHP-MD after having pear discover the channels it needs (the auto discover setting didn’t work for this install, so we need to hold pears hand)
$pear channel-discover pear.phpmd.org $pear channel-discover pear.pdepend.org $pear install --alldeps phpmd/PHP_PMD
$pear install --alldeps pear.phpunit.de/PHPUnit
Simple test is an easy to use functional testing library some find easier to use than PHPUnit. To install this library, fist download it like so
$wgetc -c http://sourceforge.net/projects/simpletest/files/simpletest/simpletest_1.1/simpletest_1.1.0.tar.gz
Then move the tar file to the place you want to store the library (I prefer /opt>
$mv simpletest_1.1.0.tar.gz /opt
Uncompress the tar
$cd /opt $tar xvf simpletest_1.1.0.tar.gz
Both JUnit and xUnit use XML reports to publish test results and SimpleTest does have the ability to output its results in XML, but the format is not compatible with jUnit or xUnit.
To get the output in the format we need, we will need to use the JUnitXMLReporter class. This class is not in the download by default and you will have to download it separately.
Go to the extensions directory
Download the JUnitXMLReporter class
$wget --output-document=junit_xml_reporter.php http://simpletest.svn.sourceforge.net/viewvc/simpletest/simpletest/tags/1.1.0/extensions/junit_xml_reporter.php?revision=2050
Set permissions for the simplest directory
$chown -R jenkins:root /opt/simpletest $chmod -R 775 /opt/simpletest
Add the library to the include path
Add “:/opt” to the php_include line like so
include_path = ".:/usr/share/php:/opt"
Save the file (escape, :wq, enter)
To install Jenkins we first need to setup OpenJDK 7 as it is recommended over Open JDK 6, which Ubuntu will try to install.
Installing OpenJDK 7
Installing OpenJDK7 JDK
$apt-get install openjdk7-jdk
The install will not setup the $JAVA_HOME environment variable, so let’s take care of that.
Add the following line
Note: If your install is not a 64-bit install your path will be different, please check /usr/lib/jvm to determine your proper path
Not that java is installed and the $JAVA_HOME variable has been defined, please exit (exit sudo or logout) and restart your terminal session (re login or enter sudo again)
To perform the install, we first need to tell apt-get to get the latest versions from jenkins-ci.org
Run the following command to the key for jenkins-ci.org’s repo
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
Add the repo to apt-gets’ sources
sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$apt-get install jenkins
In The Next Part…
In the next part of the series I will cover installing the plugins we will use in Jenkins, configuring Jenkins to use SSL, and configuring Jenkins to authenticate to Active Directory