Hudson para integración continua

What is Hudson?

[Fuente: http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson]

Hudson monitoriza ejecuciones de trabajos repetitivos, tales como la compilación del software de un proyecto o las tareas ejecutads por un cron. Entre otras cosas, Hudson actualmente se enfoca en dos tareas:

  1. Compilar/testear el software de los proyectos continuamente. Tal como lo hace CruiseControl o DamageControl. En resumen Hudson proporciona un sistema de integración continua fácil de utilizar, haciendo más fácil a los programadores integrar cambios en los proyectos, y haciendo más fácil para los usuarios obtener la última versión de la aplicación. El build continuada y automatizado incrementa la productividad.
  2. Monitorear ejecuciones de tareas ejecutadas externamente, tales como cron jobs y procmail jobs, incluso aquellos que son ejecutados en máquinas remotas. Por ejemplo, con cron, todo lo que recibes son emails normales que capturan la salida y es decisión tuya el examinarlos para ver si hay algun problema. Hudson guarda esas salidas y te hace más fácil avisarte cuando algo va mal.

Características

Hudson ofrece las siguientes características:

  1. Easy installation: Just java -jar hudson.war for testing. Use a native package or deploy it in a servlet container for production use. No additional install, no database.
  2. Easy configuration: Hudson can be configured entirely from its friendly web GUI with extensive on-the-fly error checks and inline help. There’s no need to tweak XML manually anymore, although if you’d like to do so, you can do that, too.
  3. Change set support: Hudson can generate a list of changes made into the build from SCM systems like CVS, Subversion, Git and many others.. This is done in a fairly efficient fashion, to reduce the load on the repository.
  4. Permanent links: Hudson gives you clean readable URLs for most of its pages, including some permalinks like “latest build”/”latest successful build”, so that they can be easily linked from elsewhere.
  5. RSS/E-mail/IM Integration: Monitor build results by RSS or e-mail to get real-time notifications on failures.
  6. After-the-fact tagging: Builds can be tagged long after builds are completed
  7. JUnit/TestNG test reporting: JUnit test reports can be tabulated, summarized, and displayed with history information, such as when it started breaking, etc. History trend is plotted into a graph.
  8. Distributed builds: Hudson can distribute build/test loads to multiple computers. This lets you get the most out of those idle workstations sitting beneath developers’ desks.
  9. File fingerprinting: Hudson can keep track of which build produced which jars, and which build is using which version of jars, and so on. This works even for jars that are produced outside Hudson, and is ideal for projects to track dependency.
  10. Plugin Support: Hudson can be extended via 3rd party plugins. You can write plugins to make Hudson support tools/processes that your team uses.