I work on a project in a subversion repository. Because knowing is half the battle, I wanted some kind of continuous integration on the project. Earlier I explained how you can use cijoe with github projects, but that was not an option. I wanted something simple, and came up with the following solution.
I already had a development server set up, and the test suite was written in PHPUnit. I wanted the test suite to be run regularly and notify me, if the tests did not pass. I solved it by a cron job updating the subversion repository and running the test suite, and a test listener informing me about the result.
The test listener
First I wrote the test listener. I basically just count whether there is any errors and failures. If there is, it notifies me via notifo.com, but you could also send an e-mail or anything similar.
To attach the listener to your test suite, I used the following XML-configuration:
Now I am able to run the test suite from the command line with the following command:
$ phpunit .
Putting it all together
I wrote a bash script to update the repository and run the test suite. It is really simple:
The script checks whether the repository has been updated. If it has, a local update is performed and the test suite is run. Now to make it continuous integration I just need to create a cronjob running the script on a regular basis.
Make sure that new builds are run in order and does not interfere with previous builds.
Could it be more simple? What do you think of this approach?