The continous integration process has for a main objective to verify that each update of the source code does not generate regressions and/or abnormalities on an application under development.Historically, integration has been continuously used by IBM to develop OS/360 since the 60s.
Continuous integration is not a tool but rather a practical result of eXtreme Programming (XP).
Developers working on the same application program, re-initialize it often as possible. This will trigger, at each integration, a process which is based on a platform that automatically monitors the operation of the application so that anomalies are detected upon entry.
The most difficult for a developer is to reflect the real impact of an update on all the basic functionalities of the application. Continuous integration can give the developer the broader view on the application since the application tests are done on an clone environment.
- Build:All steps necessary to compile and create, deliverables, needed to launch tests (functional, unit, HMI, etc.).
- Commit: This operation allows the validation of updates to existing source code on the local working directory of the developper's machine, via a configuration management tool (such as SVN).
- Update: This operation allows the update from the repository of the configuration management tool of the local directory.
- Checkout: This is the operation to extract a version of a project under development from the repository of the configuration manager to a local working directory.
General Features of a continuous integration server
- The developer made a commit to the repository of the configuration manager .
- The integration server detects the commit,make a Checkout launches operations compilation and testing
- In case of failure notification is generated to the project manager and/or development team.
- The developer concerned by the error makes an update of theconfiguration management repository and corrects the anomaly.
- A continuous integration server should primarily enable:
- To make Checkout operations of the Configuration Manager .
- Compiling source code
- The creation of the application archive (Ear, Jar, War, ...)
- The deployment of the archive on the test machine.
- Running a test suite: JUnit, Cactus, source code auditing, GUI testing, functional testing
- Notification of the result: mail, RSS.
- The creation of statistical report.
- Integration with other tools
Some popular integration server
- Cruise Control: open source and free, well-known, well documented, to test applications and J2EE applications. Net. is the reference of continuous integration.
- Hudson: open source and free, become more popular recently that Cruise Control can test J2EE applications. Used by SUN.
- Continuum: free opensource supported by the Apache Foundation.
- Bamboo: opensource, but must be bought.
Some useful links
Thanks to wjaouadi for this tip.