Continuous integration is a practice where developers integrate code changes frequently from the main code repository. This allows for multiple integrations per day. An automated build is run on each check-in, including running tests to detect errors early. Hudson is a free continuous integration tool written in Java that runs builds, tests, and reports issues. It integrates with source control and build tools via plugins. Eclipse plugins can also be built with Hudson and Buckminster to automate their creation and publication.
2. Content What`s CI ? Prerequisites Hudson Benefits Plugins Special Study â Eclipse Plugins Lessons Learned Conclusions Demo
3. Whatâs Continuous Integration? â˘Martin Fowler sez: Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams ďŹnd that this approach leads to signiďŹcantly reduced integration problems and allows a team to develop cohesive software more rapidly.
4. How Developers Code while ( not done ) { write some code; test by poking at it tediously; fix the bugs you see; } deploy; cross your fingers nobody finds new bugs; return;
5. Continuous Integration: Some Free Systems ⢠Cruise Control - Java-based framework for a continuous build process ⢠BuildBot - Open Source Python system to automate thecompile/test cycle to validate code ⢠Hudson -  a continuous integration tool written in Java
6. Basic Continuous Integration ⢠Check the code repo for changes every few minutes ⢠Build or compile the code ⢠Run your tests: unit, regresssion, etc ⢠of course you have to have tests to run! ⢠Alert if problems
7. Prerequisites: Automated Build ⢠No human intervention allowed ⢠ant, maven ⢠setup.py, pip, buildout (every language has one) Code that Tests Your Code ⢠Can run without firing up the whole stack (web framework, security, ...) ⢠unit tests: junit, nose, ... ⢠functional tests: selenium, abott, ... ⢠Run locally before checking in: âdonât break the buildâ
8. Hudson Benefits ⢠Never gets bored doing builds and tests ⢠Catches problems fast ⢠Alerts developers while code is fresh in their minds ⢠Prevents bugs from propagating downstream ⢠Cheaper to fix bugs earlier, before QA or Deployment
9. Helpful Plugins Source code management Build triggers Build tools Slave launchers and controllers Build reports External site/tool integrations UI plugins Authentication and user management Cluster management and distributed build CLI extensions
10. Helpful Plugins ⢠Subversion: code repo checkout ⢠Cobertura: test coverage reporter ⢠Maven: many plugins available ⢠JDepend: Java package dependency analyzer => design quality metrics. ⢠PMD: open source static code analysis tool looking for possiblebugs ⢠Checkstyle:  static code analysis tool checking source code compliancewith coding rules ⢠Selenium: functional, click-testing ⢠Monitor for Android: status on your phone ⢠Chuck Norris: motivational help :-)
11.
12.
13. creates an update site containing all the plugins, features and binary artifacts.
14. the build script will then utilize the p2 director application to create the actual product from the update site's content.
15.
16.
17. The job needs two build steps: Execute Shell and Run Buckminster. The execute shell step will delete the directory where the target platform is materialized to ensure a clean build every time.
18. In the Run Buckminster build step you need to import the two MSPECs defined above.
19.
20. Conclusions ⢠Hudson watches the code repo for commits ⢠Checks out code ⢠Builds it with your build âscriptâ ⢠Runs your tests ⢠Reports problems by email and IM ⢠Tracks metrics, if available