Monthly Archive for: ‘May, 2014’

Eclipse 4 Application Platform Tutorial Update

1

Recently I worked a bit on my Eclipse 4 Application Platform Tutorial. The good news for you: The slides are now licensed under a Creative Commons Attribution 4.0 International License.

cc-88x31

If you find useful stuff in the slides that you would like to re-use for talks, trainings or even for commercial use, you could do that now. You find the current slide deck either on my Web site or directly at SpeakerDeck. The corresponding source code is hosted at my GitHub repository and licensed under EPL. Here is a screenshot of the little app developed in the tutorial.

e4-tutorial-thumb

The slides as the sources are valid for both Kepler and Luna.

If you find outdated/strange/wrong things in the slides, please let me know :).

Continuous Integration with Travis CI

2

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.

A few examples: my current pet project chatty has a Java back-end and a HTML/JavaScript based front-end (actually mostly written in TypeScript). For the JavaScript/TypeScript part I need node.js installed, as well as grunt, bower and tsd (TypeScript Definition Manager). The yml file looks like:

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

[![Build Status](https://travis-ci.org/toedter/chatty.svg?branch=master)](https://travis-ci.org/toedter/chatty)

Then a nice icon build status 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!