I'm currently looking into setting up a strong CI & deployment environment for a project shared across a small team of developers. Objective is to bring some consistency in the way things are tested, in the overall code quality and in the way deployments are done.
I've read about Jenkins, Sonar, Maven, Capistrano, Phing, ANT, ... and to be honest I'm getting lost in the middle of all of those tools/technologies and would like you to validate my understanding and to give me some insight on best way to achieve this.
Jenkins: Jenkins is triggered by a GIT hook (on the development branch), and will execute a PHING script performing the below actions:
Jenkins is then sending all the reports/data to Sonar unsing a sonnar-runner.
Sonar is gathering all those data, storing them in a database which offers a way of analysing the evolution of your application code over time. It also display information in a nicer way than Jenkins does.
Thanks a lot for your time and help!
Jenkins is really popular for CI (build automation), as well as for general purpose automation. As such, it seems a natural fit to use Jenkins's automation capabilities to deploy the software you built.
Looks good overall. I haven't personally used Sonar (but aware of it) or Capistrano (never even heard of this one), so can't comment on those.
Maven is a dependency, build and deployment tool, mainly for Java projects. You are already taking care of the "build" with Jenkins, so don't worry about Maven.
As for deployment, I wrote a very detailed explanation here how to deploy Jenkins builds. Jenkins is fully capable of doing your deployment, so why bother looking to add another tool into the mix? The only thing you need is a bash (or batch, depending on your environment) script to take your PHP files (I advise to zip them up as part of the build job) and copy/deploy them on the remote server.
If you have more specific question, ask away.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With