N-Things You Can Do With Continuous Integration Tools Hudson and Jenkins

Hudson (or Jenkins) is a great tool for continuous integration. Once I learned about it and started doing continuous builds and integration for my projects using hudson, I am simply in love with it. It is so flexible, light weight and does a variety of things. With over 400 different plugins available at their update website (see Jenkins Plugins Page and Hudson Plugins Page) , you can extend your base installation of this tool to do a variety of things.

If you still evaluating why you or your company needs this tool, here are a few things I noted down that you can look at to make your decision. This is by no means  a complete list of items. Hudson and Jenkins are far more powerful that just doing the items that I have listed below.

  1. Poll subversion for any changes and trigger a build if any new changes are available.
  2. Tag the release back to subversion.
  3. Schedule Ant or Maven builds based on cerain triggers such as code change or time,
  4. Trigger another build when one build completes.
  5. Trigger a build when Maven dependencies have been updated by Maven 3 integration
  6. Trigger a build when Maven SNAPSHOT dependencies have been updated externally.
  7. Build a project after another project is built.
  8. Automatically reschedule a build after a build failure using “Naginator Plugin”
  9. Build a project with Parameters via “Parameterized Trigger” plugins. The parameters passed could be for example, build label etc.
  10. Run your JUnit Tests automatically and get a nicely formatted graph
  11. Run the code coverage (Clover, Emma or Cobertura) automatically and get a nicely formatted graph
  12. Configure to run Checkstyle for capturing the code formatting issues and present the output in a nicely presented graphs.
  13. Look at the list of recent changes that were made on subversion by revision numbers.
  14. Copy the build artifacts to FTP, SCP, Network folders or other local folders.
  15. Run automated Tests using Cucumber
  16. Run automated tests using QTP
  17. Code Quality Metrics via “Violations” plugin.
  18. Run multiple builds in parallel.
  19. Send a list of people an email (Can be customized) when the build fails, is successful or has JUnits failing.
  20. Group your build jobs on different Views that are displayed as tabs.
  21. View quickly what builds are currently running.
  22. Look at the build history for build time taken, build status etc.
  23. Look at the console output of the build that is constantnly updated via Ajax calls.
  24. View the disk space usage.
  25. View the build time trend graphically
  26. Integrate Hudson Build With Sonar – via Sonar Plugin
  27. Run the build from web – no more kicking the builds from consoles or terminals.
  28. Secure the hudson access via LDAP. Users and user permissions can be added, modified or removed to finer levels.
  29. Run the hudson server itself as a service.
  30. Limit the maximum number of builds to keep on the server.
  31. Monitor your build via iPhone app – “Hudson Helper iPhone app”
  32. Monitor your build via RSS