- Here is what I have done with CI for a PHP project.
- Key aim is knowledge sharing and if sessions like this are value.
I am not saying that this is correct or should be or even can be applied to all projects but this has worked for me.
I will go through some of the tools used, some of the steps in the integration process - I am open to suggestions or discussions on different ways to do things.
A process of integrating code in a software development project and validating the cohesion ?
This could be a manual process; maybe employ a team of people to do it, or...
Because we automated EVERYTHING, this should be an automated process and because we don't want to reinvent the wheel we use a tool to do this; enter Jenkins.
But we need some way to validate the changes so we have some kind of tests.
This test could be just that the project compiles, or you could actually verify the functionality so we have suites of tests.
All this is so that...
- find problems due to changes quickly with feedback
- constant availability of a product that is shippable
- frequent checkins
But you probably need some kind of tests.
A generic tool to centralise integrating and building projects of various technologies. We can tell it to look for changes in source code repo and then do something, then do something else, then finally do something else.
Loads of technologies, loads of plugins.
A trying to be RESTful API for OS MapFinder clients; we use http verbs, codes and stateless
Make a request and get either http code or http 200 and json back. Easy.
Runs on MS Azure with IIS :(
How I came to take it on...
It's using Silex
for routing, request, response abstraction + MS Azure SDK + the rest is custom code.
Composer - I have had problems with some packages but obvious value with this. Why?
Code
Ant - Everyone knows how it works
This will build the project artifact; the thing that is deployable.
But also as a wrapper around every other tool so that 1) convenience 2) Jenkins knows how to run things
PHPUnit
Types of test;
Unit Integration(ish) Functional
Various Phpunit configs for CI.
PHPMD - Static analysis;
Not using any kind of CheckStyle yet - to be discussed.
Look at the Jenkins job.