2. Continuous What? Automated build and test process to verify a software / website / web app build Quality Assurance applied continually during development continuous integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development.* * http://en.wikipedia.org/wiki/Continuous_integration
4. Jenkins... Built with Java Provides its own web based interface – doesn’t interfere with your Apache installation Recommendation: install Continuous Integration stuff on a separate server – processing lots of builds could get resource intensive Available for Windows, Mac and Linux
5. Installation Add the Jenkins repository key to aptitude wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add – Add the repository to your sources file sudo nano /etc/apt/sources.list deb http://pkg.jenkins-ci.org/debian binary/ sudo apt-get update Install sudo apt-get install jenkins
8. Ant Should be familiar to Java programmers... Makes it really easy to: Move, copy, delete, rename files and folders – use it to move files around after checking out from version control e.g. Swap in a test config file Run commands / programs on the code – such as unit testing, code sniffing and generating documentation Built in to Jenkins out of the box
9. Testing Automatically run your unit tests Find a plugin Get ant to run your tests by executing commands Build fails if tests fail <target name="phpunit" description="Run unit tests using PHPUnit and generates junit.xml and clover.xml"> <exec executable="phpunit" failonerror="true"/> </target> <target name="phpunit" description="Run unit tests using PHPUnit and generates junit.xml and clover.xml"> <exec executable="phpunit" failonerror="true"/> </target> <target name="phpunit" description="Run unit tests using PHPUnit and generates results as XML files"> <exec executable="phpunit" failonerror="true"/> </target>
17. Pipeline Chain Jenkins jobs together, triggering others (e.g. deployment) only when the first job builds successfully, ensures only tested and quality code goes online https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin (no screenshots, because I couldn’t get it to work )
18. Deployment Plug Jenkins into your deployment process Copy files over FTP Copy files over SSH Execute commands on a remote server Tell the web server that the new site has been copied across and is ready for use
19. Improve Improve the quality of your code Automate your: Testing Quality Assurance process Deployment to development areas Deployment to live environment (through pipeline) Keep clients happier!