1. What is Hudon?
Hudson is a continuous integration tool written in Java. Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs:
2. Key Features
The key features of Hudson are as furnished below:
Continuous Integration
· Easy installation
· Dashboard support
· Integrate with other systems via CLI and REST API
· Test/build matrix support
· Intelligent console output
· Monitor build output in real time
· Run builds concurrently for faster feedback
· Built-in automatic backup
· Self-upgrade
· Upgradable from Hudson
· Supports a large number of build tools via plugins
· Install plugins from web UI
· Extensibility
Source Code Control Integration
· Start a build whenever a commit is made
· Hold off a new build while commits are coming
· Track commits in builds
· After-the-fact tagging
· Clean checkout or incremental update
· Comprehensive version control support
Test Result Comprehension
· Inspect test results online
· Focus on newly failed tests and fixed tests
· Monitor the test execution time trend
· Supports a large number of test frameworks via plugins
Security
· Per-project access control
· LDAP integration
· Zero-conf Active Directory integration
· SSO integration: Atlassian Crowd, CAS, SourceForge Enterprise Edition, CollabNet TeamForge, ...
Maven Integration
· POM comprehension
· Automatic archiving of reports
· Mojo execution recording
· Parallel module builds
· Incremental module builds
· Automatic snapshot dependency setup
Distributed Builds
· Intelligent job dispatching
· Zero-setup slave installation
· Flexible deployment topology
· Slave health metrics monitoring
· Automatic JDK/Ant/Maven installation
Notifications
· Notify upstream component developers if downstream fails
· Reduce the notification spam
· Failure notification to people who broke the build
· Get the notifications the way you want with plugins
Code Quality Analysis
1. Monitor FindBugs, Checkstyle, PMD, warnings, and TODOs.
2. Insights into code quality
3. Colored HTML display of source files and detected problems
3 Why Hudson? ·
4 Technology Stack Support
Hudson has source code management support through various plugins for different SCM tools like Subversion, CVS, Team Foundation Server (TFS), ClearCase, StarTeam etc. with different code base projects like Java, .NET, C++, C, Ruby, Python, Drools etc. Hudson also support integration with external tools like Maven, authentication and management, cluster management and distributed build, build reports, build notifiers, build wrappers, build tools, uploaders etc.
5 Installation & Configuration
Hudson installation and configuration details are available at the below links.
· http://wiki.hudson-ci.org/display/HUDSON/Installing+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/JBoss
6 Best Practices
· Always secure Hudson
This is around authenticating users and enforcing access control on a Hudson instance. In the default configuration, Hudson does not perform any security check. This means any person accessing the website can configure Hudson and jobs, and perform builds. While this configuration is normally acceptable for intranet use and quick setup, it introduces high security risks, like someone accidentally deleting your build jobs, reconfiguring your job to run every minute, kicking off too many builds at the same time, reconfiguring your build instance, etc.
· Backup Hudson Home regularly
· Use “file fingerprinting” to manage dependencies
· The most reliable builds will be clean builds, which are built fully from Source Code Control
· Integrate tightly with your issue tracking system, like JIRA or bugzilla, to reduce the need for maintaining a Change Log
· Integrate tightly with a repository browsing tool like FishEye if you are using Subversion as source code management tool
· Always configure your job to generate trend reports and automated testing when running a Java build
· Set up Hudson on the partition that has the most free disk-space
· Archive unused jobs before removing them
· Setup a different job/project for each maintenance or development branch you create
· Allocate a different port for parallel project builds and avoid scheduling all jobs to start at the same time
· Set up email notifications mapping to ALL developers in the project, so that everyone on the team has his pulse on the project's current status
· Take steps to ensure failures are reported as soon as possible
· Write jobs for your maintenance tasks, such as cleanup operations to avoid disk full problems
· Tag, label, or baseline the codebase after the successful build
· Configure Hudson bootstrapper to update your working copy prior to running the build goal/target
7 Future Support
Commercial Support:
InfraDNA, a company started by the Hudson creator Kohsuke Kawaguchi, offers the support subscription of Hudson. InfraDNA provides professional support and services around the most popular open-source continuous integration server in the world, Hudson.
Yearly Subscription:
There is a yearly subscription mode if Hudson is used for more critical purposes. The price is proportional to the combined total # of "executors" in your Hudson deployment. This also gives you access to InfraDNA’s Certified Hudson CI Server, a value-add product on top of Hudson.
For more details:
http://infradna.com/support
http://infradna.com/
8 References
Few more useful links:
· http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/Hudson+Best+Practices
· http://wiki.hudson-ci.org/display/HUDSON/Plugins
· http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds
Also please have a look at the following link:
http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html?page=1
Hudson is a continuous integration tool written in Java. Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs:
- Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Hudson provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
- Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Hudson keeps those outputs and makes it easy for you to notice when something is wrong.
2. Key Features
The key features of Hudson are as furnished below:
Continuous Integration
· Easy installation
· Dashboard support
· Integrate with other systems via CLI and REST API
· Test/build matrix support
· Intelligent console output
· Monitor build output in real time
· Run builds concurrently for faster feedback
· Built-in automatic backup
· Self-upgrade
· Upgradable from Hudson
· Supports a large number of build tools via plugins
· Install plugins from web UI
· Extensibility
Source Code Control Integration
· Start a build whenever a commit is made
· Hold off a new build while commits are coming
· Track commits in builds
· After-the-fact tagging
· Clean checkout or incremental update
· Comprehensive version control support
Test Result Comprehension
· Inspect test results online
· Focus on newly failed tests and fixed tests
· Monitor the test execution time trend
· Supports a large number of test frameworks via plugins
Security
· Per-project access control
· LDAP integration
· Zero-conf Active Directory integration
· SSO integration: Atlassian Crowd, CAS, SourceForge Enterprise Edition, CollabNet TeamForge, ...
Maven Integration
· POM comprehension
· Automatic archiving of reports
· Mojo execution recording
· Parallel module builds
· Incremental module builds
· Automatic snapshot dependency setup
Distributed Builds
· Intelligent job dispatching
· Zero-setup slave installation
· Flexible deployment topology
· Slave health metrics monitoring
· Automatic JDK/Ant/Maven installation
Notifications
· Notify upstream component developers if downstream fails
· Reduce the notification spam
· Failure notification to people who broke the build
· Get the notifications the way you want with plugins
Code Quality Analysis
1. Monitor FindBugs, Checkstyle, PMD, warnings, and TODOs.
2. Insights into code quality
3. Colored HTML display of source files and detected problems
3 Why Hudson? ·
- Open Source
- Easy to use - Everything can be done through its web interface
- Plenty of plugins/the eco system around Hudson for extending/integrating Hudson
- Reporting/coverage features
- Distributed builds
4 Technology Stack Support
Hudson has source code management support through various plugins for different SCM tools like Subversion, CVS, Team Foundation Server (TFS), ClearCase, StarTeam etc. with different code base projects like Java, .NET, C++, C, Ruby, Python, Drools etc. Hudson also support integration with external tools like Maven, authentication and management, cluster management and distributed build, build reports, build notifiers, build wrappers, build tools, uploaders etc.
5 Installation & Configuration
Hudson installation and configuration details are available at the below links.
· http://wiki.hudson-ci.org/display/HUDSON/Installing+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/JBoss
6 Best Practices
· Always secure Hudson
This is around authenticating users and enforcing access control on a Hudson instance. In the default configuration, Hudson does not perform any security check. This means any person accessing the website can configure Hudson and jobs, and perform builds. While this configuration is normally acceptable for intranet use and quick setup, it introduces high security risks, like someone accidentally deleting your build jobs, reconfiguring your job to run every minute, kicking off too many builds at the same time, reconfiguring your build instance, etc.
· Backup Hudson Home regularly
· Use “file fingerprinting” to manage dependencies
· The most reliable builds will be clean builds, which are built fully from Source Code Control
· Integrate tightly with your issue tracking system, like JIRA or bugzilla, to reduce the need for maintaining a Change Log
· Integrate tightly with a repository browsing tool like FishEye if you are using Subversion as source code management tool
· Always configure your job to generate trend reports and automated testing when running a Java build
· Set up Hudson on the partition that has the most free disk-space
· Archive unused jobs before removing them
· Setup a different job/project for each maintenance or development branch you create
· Allocate a different port for parallel project builds and avoid scheduling all jobs to start at the same time
· Set up email notifications mapping to ALL developers in the project, so that everyone on the team has his pulse on the project's current status
· Take steps to ensure failures are reported as soon as possible
· Write jobs for your maintenance tasks, such as cleanup operations to avoid disk full problems
· Tag, label, or baseline the codebase after the successful build
· Configure Hudson bootstrapper to update your working copy prior to running the build goal/target
7 Future Support
Commercial Support:
InfraDNA, a company started by the Hudson creator Kohsuke Kawaguchi, offers the support subscription of Hudson. InfraDNA provides professional support and services around the most popular open-source continuous integration server in the world, Hudson.
Yearly Subscription:
There is a yearly subscription mode if Hudson is used for more critical purposes. The price is proportional to the combined total # of "executors" in your Hudson deployment. This also gives you access to InfraDNA’s Certified Hudson CI Server, a value-add product on top of Hudson.
For more details:
http://infradna.com/support
http://infradna.com/
8 References
Few more useful links:
· http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
· http://wiki.hudson-ci.org/display/HUDSON/Hudson+Best+Practices
· http://wiki.hudson-ci.org/display/HUDSON/Plugins
· http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds
Also please have a look at the following link:
http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html?page=1