Continuous Integration with Travis CI
Travis CI is a cloud-based continuous integration service that supports many different programming languages and environments. If you have projects at GitHub, Travis CI might be interesting for you. I currently use it for a few of my open source projects at GitHub. Setup is quite easy, you can log in with your GitHub credentials and then you get a lit of all repos you have administration rights. Then you can configure, when Travis should run a build, e.g. on every push or pull request. The only thing you have to do is to provide a .travis.yml file at the root of your GitHub project that contains configuration info.
language: java jdk: - oraclejdk8 before_script: - npm install -g grunt-cli - npm install -g bower - npm install -g tsd script: ./gradlew test
This makes sure that the node modules grunt-cli, bower and tsd is installed before the build is run. Gradle is supported out of the box but the default is the check task. In my chatty project I have integration tests that I don’t want to run on Travis CI, that’s why I explicitly use ‘gradlew test’ as script. Make sure that the build scripts are executable. While this is a no-brainer on most operating systems, on Windows it is not so easy. But even on Windows you could use git to do the job, e.g.:
git update-index --chmod=+x gradlew
When the Travis CI build is set up, you can include a build indicator icon directory in the readme of your GitHub project. If you use markdown, the code snipped (for chatty) looks like
Then a nice icon is displayed in your project description.
Eclipse based Builds
When you want to run Tycho based builds for Eclipse based projects, you only have to make sure to change to the directory of the parent pom. The yml file for my Eclipse 4 Application Platform Tutorial looks like:
language: java jdk: - oraclejdk8 before_script: - cd org.eclipse.e4.tutorial.contacts.build.tycho script: mvn clean install -DskipTests
I had some trouble running tests on Travis CI that involve SWT, that’s why I skip the tests.
Grails based Builds
Travis CI does not support Grails out of the box (like Gradle) but this is no problem at all since Grails provides its own Wrapper. So make sure that the wrapper is part of your project. One of our Siemens OSS projects, the REST API doc for Grails has the following yml file:
language: groovy script: ./grailsw refresh-dependencies && ./grailsw test-app --echoOut
I am a big fan of Travis CI and recommend to give it a try!