Hudson CI testing for grails from git
After running continuous integration with continuum for a long while (which works great for maven projects) I decided to take a look at Hudson. It can also do maven - but seems to have a larger range of plugins available. Of interest to me was grails.
This was extremely simple - I just grabbed the hudson.war file from the hudson site and deployed it in a running glassfish.
This was a bit more complex. Under Manage Hudson > Configure System
Note the User/Group names -
ROLE_HUDSON. For this to work you need
groupOfUniqueNames entries directly under the group search base (here
ou=groups,dc=chrissearle,dc=net) with the names
cn=hudson. Hudson will match this by removing ROLE and lowercasing the rolename. This was unclear in the hudson docs I was reading but google came to the rescue.
To be able to test grails projects from git I installed the grails and git plugins (Manage Hudson > Manage Plugins > Available). Check them off (and any others you want) and then install them.
Each plugin will add a config section under Manage Hudson > Configure System.
Since git is in the path this is OK - otherwise set the full path.
Here only grails 1.0.4 is configured - but you can add several different versions.
Now lets add a grails project.
Choose New Job from the main menu.
Add a name and choose free-style.
To configure the project - choose git from the SCM configuration section - my projects have the ability to be cloned over http - so just add the clone URL as the git repository url. Set a branch if you're not testing master.
For build triggers - I chose to poll the SCM with the following schedule
_/5 _ * * *
For build choose "Add build step" and choose Build with Grails. You'll need to pick which grails installation from the dropdown (these were configured above) and also target.
I normally add two grails build steps - one for target test, one for target war - so that if it fails then the notification tells me which step.
Finally set whichever notification options you want. Git specific is the ability to tag the original repository with the test.
For me the other plugins that are useful are JIRA (if the last commit message contains a JIRA tag then it will comment in the JIRA issue when the test passes), and email/jabber/irc/twitter notifications.