Oct 29, 2013

Testing Grails With a Travis Build Matrix

Continuous integration testing can be configured to create a build matrix to test multiple configurations of a project using a single build configuration.  This can be useful if you want to test a Grails application with multiple Grails versions, to test plugins with multiple Grails versions, or to test using varying configuration values.

The Travis CI build tool has a build matrix feature which allows you to specify multiple configuration parameters in the .travis.yml configuration file and runs the build against all possible combinations of these parameters. In the following example, I use the Groovy enVironment Manager (GVM) to change Grails versions between tests. I found this blog post which details how to set up GVM for Travis and updated this approach to force the GVM install command to return success instead of the workaround given there. The env block in the .travis.yml specifies the different environment parameters which will be passed to each test run to create the build matrix:

The example build result below shows the different Grails version on the right used for each build. The source code for this example project can be found on Github.

Example Travis build matrix output of a Grails project build using GVM

More information about configuring a build matrix for Travis can be found in the Travis CI documentation.

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
An Exploration in Rust: Musings From a Java/C++ Developer
Why Rust? It’s fast (runtime performance) It’s small (binary size) It’s safe (no memory leaks) It’s modern (build system, language features, etc) When Is It Worth It? Embedded systems (where it is implied that interpreted […]
Getting Started with CSS Container Queries
For as long as I’ve been working full-time on the front-end, I’ve heard about the promise of container queries and their potential to solve the majority of our responsive web design needs. And, for as […]
Simple improvements to making decisions in teams
Software development teams need to make a lot of decisions. Functional requirements, non-functional requirements, user experience, API contracts, tech stack, architecture, database schemas, cloud providers, deployment strategy, test strategy, security, and the list goes on. […]
JavaScript Bundle Optimization – Polyfills
If you are lucky enough to only support a small subset of browsers (for example, you are targeting a controlled set of users), feel free to move along. However, if your website is open to […]