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:
- Ant
- Pear
- 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
- XSL
- XDebug
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
$add-apt-repository ppa:ondrej/php5
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
PHP Unit
$pear install --alldeps pear.phpunit.de/PHPUnit
Simple Test
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
$cd simpletest/extensions
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
$vim /etc/php5/cli/php.ini
Add “:/opt” to the php_include line like so
include_path = ".:/usr/share/php:/opt"
Save the file (escape, :wq, enter)
Installing Jenkins
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.
Edit /etc/environment
Add the following line
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/"
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)
Installing Jenkins
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'
Update apt-get
apt-get update
Install Jenkins
$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
Reblogged this on ITechonology.
Could you explain how to install pdepend?, I’m stuck trying to get the installation correct, thanks
Sure. PDepend is a dependency for PHP Mess Detector and is included during the install, but if it not working, you can try this:
1. Discover the channel
pear channel-discover pear.pdepend.org
2. Install PDepend
pear install pdepend/PHP_Depend
You may not have luck doing this today as I noticed that pdepend.org is timing out when I browse to it.
Awesome!!! great tutorial 🙂
For PHP_CodeBrowser, the phpqatools.org is not longer there, i tried using
pear install –alldeps pear.phpunit.de/PHP_CodeBrowser and it worked.
Thanks for the heads up. I’ll try to remove the reference to it in my spare time. Fortunately, the pear channel is not critical to the installation, it just made life easier.
In the sample build file, this =>>>> is the correct format and not .
I almost sunk my head trying to figure out why the build was failing with a strange error message.
CORRECT
INCORRECT
” ” is correct
gave up. the code is not showing
You could put the code in a paste bin entry and comment a link.
What was the error message, by the way?
Reblogged this on Peace of Code and commented:
PHP Tools :: เครื่องมือสำหรับ PHP Dev.
it is not possible to install pear-libraries.
Connection to `pear.phpqatools.org:443′ failed
unknown channel “pear.phpunit.de” in “pear.phpunit.de/PHP_CodeCoverage”
and so on…
It looks like pear.phpunit.de is or has been shutdown as version 4.0 will be available via PHAR or Composer https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method
I’ll have to look at updating the article to use something like composer or phar when I get a chance.
Great guide.
You just have a small typo on Installing OpenJDK7 JDK. The correct package is openjdk-7-jdk
Thanks for pointing that out, I will try to get that corrected soon.
Hello, could you please give me a tip is there a way how xdebug could be configured on NOT builded source ?
I’m not sure if you’re still having this issue, but if you are, are you looking at not using XDebug for PHPUnit? Or did you mean something else?