Fork me on GitHub

3 May 2010

Building your app on Hudson with Multiple Grails versions

For my Grails plugins I generally write a test project (or more than one). I thought it would be useful to be able to run these against multiple versions of Grails on my build server so I can spot any incompatibilities with the versions the plugin is supposed to support.

Using Hudson this turned out to be pretty straightforward.

You will need all the Grails versions you want to test against installed on your Hudson box. I put them in /opt so replace that with wherever you have them in the steps below. Also, if you want the builds to run in parallel and will be running any functional tests you'll need the Hudson Port Allocator plugin.

  • Start by creating a new job in Hudson and choosing "Build multi-configuration project".
  • The configuration dialog has an extra section "Configuration Matrix" where you can set up the different config combinations that will run. We're just interested in varying the Grails version so check the "Axes" and create a new axis named "GRAILS_VERSION" with the different versions you want in the "values" box, e.g. "1.2.0 1.2.1 1.2.2 1.3.0.RC2"
  • Set up your source code repository and build triggers as you would for any other project.
  • If you want to run the builds in parallel and are running any functional tests you will need to make sure that Grails starts up on a unique port. In the "Build environment" section add a new "Plain TCP port" named "GRAILS_PORT". If you're running anything else that needs a port such as a Selenium server you'll need one for that as well.
  • Add an "Execute shell" build step. Unfortunately the Hudson Grails plugin does not allow you to use a variable to specify the Grails version so you'll have to go old-school:
    export GRAILS_HOME=/opt/grails-$GRAILS_VERSION
    export PATH=$GRAILS_HOME/bin:$PATH
    # assign Grails a unique port (you can skip this if you're only running unit/integration tests)
    export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$GRAILS_PORT"
    grails clean
    grails upgrade --non-interactive
    grails test-app --non-interactive
  • Check "Publish JUnit test result report" in the "Post-build Actions" section and specify target/test-reports/*.xml as the "Test report XMLs"

When you run the Hudson job you should see it kick off one sub-job for each Grails version. Each will check out the project, upgrade it to the relevant Grails version and run the tests.

I have my plugin test projects triggered by the plugin build and have them grab the plugin zip itself from the archived artefacts in the plugin's Hudson job. So I've added this before the grails test-app step:
grails install-plugin http://my.hudson.server/hudson/job/my-plugin/lastSuccessfulBuild/artifact/my-plugin-1.0.zip --non-interactive
There's a bug in Grails 1.3.0.RC2 that means you will need to split this into a wget followed by installing the zip from a file path rather than a URL. This is fixed in trunk so won't be a problem in Grails 1.3 final.

If you're using SVN I think you may need to revert any changes the grails upgrade has made to application.properties, etc. otherwise you'll get merge conflicts on the next run. This does not seem to be a problem with Git.

12 comments:

Unknown said...

There are times when I find it difficult to make decisions, but still have to do. I know people always have emotions so that there is no justice. But I still hope.
http://www.facebookbaixargratis.com.br

Unknown said...

I should admit I have flown in a read a decent number of your blogs yet I have no clue how to post a response over yonder, so I'll disclose to you know how great you are at exposing the stuff you are at, I should admit I think that its clever to read your blogging. For more info you can use this quality custom essays online to having a wonderful assistant in writing and even you can get the guidelines too.

steve said...



افضل شركة تنظيف مجالس بالدمام شركة تنظيف مجالس بالدمام
شركة تنظيف سجاد بالدمام شركة غسيل سجاد بالدمام

افضل شركة كشف تسربات المياه بالمدينة المنورة شركات كشف تسربات المياه بالمدينة المنورة
شركة كشف تسربات المياه بالاحساء  شركة كشف تسربات المياه بالاحساء

شركة مكافحة حشرات بالرياض شركة مكافحة الحشرات بالرياض
شركة رش مبيدات بالرياض شركة رش مبيدات بالرياض

شركة تنظيف كنب بالدمام افضل شركة تنظيف كنب بالدمام
شركة تنظيف سجاد بالخبر شركة غسيل سجاد بالخبر
شركة مكافحة البق بالرياض شركة مكافحة بق الفراش بالرياض

Alison Macgomery said...

As the world becomes more global (better connected) here https://essaysprofessors.com/short-answer-questions.html , it is only natural that big businesses will want and need to communicate more. Right now, everyone is trying to learn and communicate with English.English is becoming the common language that people from different countries and cultures can use to communicate with one another.

Asia Smith said...

Enjoyed reading your blog. It is full of important information. I think, it will be helpful for people having jobs in IT. IT business now is a great opportunity to communicate with people of different nations and exchange knowledge in this sphere. For more info you can use summary and response essays for this topic.

HelgaMarselos said...

One of the most difficult things about being a student is spending your nights to write home tasks. If you are overload with dozens of academic assignments, consider this writing service https://topwritingservice.com/best-article-writing-service/ as the best helper.

meldaresearchusa said...

We not only provide Cheap Research Paper Writing Services for our clients but help them understand the procedure for writing a Write My Research Papers so that they can gain the knowledge and be able to write a paper on their own.

steve said...



فني تظيف مكيفات بالرياض
شركة تنظيف افران بالرياض
شركة تركيب غرف نوم بالرياض
فني تركيب مكيفات بالرياض
شركة تركيب اثاث ايكيا بالرياض

Puremelda said...

One unique characteristic of the firm's Custom Research Paper Services and College Paper Writing Services is that they offer the best market rates and actual research on all their Custom College Paper Writing Services.

meldaresearch said...

Online education writing services companies have come up with Online Education Assignment Help for education and teaching studies students in order for them to score straight A’s in their custom education research paper services.

Florahmelda said...

To seek the best Healthcare Assignment Writing Services for those studying healthcare coursework writing services, it is important to hire an award winning healthcare essay writing service company.

Term Paper Writing Services said...

History coursework writing services has become very popular among students seeking History Essay Writing Services and history research paper writing services.