Build of JWT Features and Plugins

This section presents information concerning the JWT 1.3.0 build for eclipse Kepler on Hudson and would be considered as a very useful resource for JWT's future release engineers (starting with Eclipse Luna scheduled for release in 2014). Some of the information/steps that follow might be not necessary for future JWT builds using Maven Tycho since they have already been done but we illustrate them anyway so that we would have a comprehensive and complete documentation of the whole building process. We start by explaining how to prepare the JWT project for the build and then follow by explaining how to configure Hudson to build JWT.

Helpful resources

The following link includes an Eclipse Tycho tutorial that would serve as a very useful resource demonstrating how to build Eclipse plug-ins, features and how to create Eclipse p2 update sites with Maven Tycho.

Preparing JWT to be built by Maven Tycho

This section provides information concerning preparing JWT to be built using Maven Tycho and preparing the p2 update site contents to be signed by the eclipse signature after the build is done and the jars generated.

Master project for the build

The current master project for the JWT build is a project of type Generalmvn-jwt-builder found at http://dev.eclipse.org/svnroot/soa/org.eclipse.jwt/trunk/releng/mvn-jwt-builder/. This project contains the master pom.xml for building the plug-ins. This pom.xml file contains all modules that are related to the build. Modules are the features and plugins to be built in addition to the p2update site of the project. The master pom.xml file also contains general information about the build like the project's repositories in addition to links to any external plugin dependencies the build might need.

P2 update Site project

The p2 update site project includes jars generated from the build and that are required for installing JWT. The current p2 update site project is a project of type General called org.eclipse.jwt.p2updatesite and can be found at http://dev.eclipse.org/svnroot/soa/org.eclipse.jwt/trunk/releng/org.eclipse.jwt.p2updatesite/. This project also has it's own pom.xml file and it includes a profile that signs the JWT jars using the eclipse signature. This is prerequisite for eclipse projects and the details of signing the jars will be explained in the following section.

Signing the JWT jars using the eclipse signature

First, the proper maven.eclipse.org repository was added to the master pom.xml.

Configuring Hudson to build JWT

To build JWT on Hudson using Maven, a build step has to be added that uses Maven. The following screenshot presents the details of this build step as used for the Kepler release.

As illustrated by the screenshot, the only build goals needed are "clean install". Moreover, the path to the master pom.xml file had to be specified in the POM file field. Finally, the signing profile added earlier had to be triggered to sign the jars using the eclipse signature. The profile added was called "build-server" and it is enough to simply write its name in the "Profiles" field.

Now everything is ready and the final step would be to click "Build now" from the main page of the build on Hudson.

What can still be done

Try to use a build/continuous integration server

Try to have nightly build

Merge builder and tester: Move the test.xml from tester to builder, test and replace references to tester by builder.

Enable automatic deployment of JWT to the update site through after the build is run

Run JUnit tests on Hudson

Take care of the stable build on Hudson

What we have

JWT build minimal Eclipse base

In order for the build and automated testing to be working as fast as possible, it is necessary to maintain a build base (in /shared/technology/jwt/base on build.eclipse.org), that contains only the projects that are necessary to build and test JWT, and to ensure that these project are built for for the build server you are using.

Creating the base with from repositories (recommended)

P2 is the recommended way to install feature since it checks dependencies and avoids to forget some bundles that are necessary at runtime for testing.

Currently, JWT build on Eclipse server uses the latest version that contains a Maintenance or Release build (ie buildId starting with R or M)

However, we could discuss about trying to build usng stable or milestone builds, to ensure the compatibility with the latest versions of projects. But this would require much more work until we succeed to automate the creation of the base with the latest drops...

Check an existing base

There are 2 ways to check that an eclipse installation matches your machine platform:

Try to run the eclipse launcher program (./eclipse). If eclipse starts, it is OK

From the eclipse directory, try command ls plugins/ | grep org.eclipse.swt, then you should get a list of plugins, and one of them specifies a os/ws/arch 3-uplet in its name. It must be match your server platform.

If you don't have the same eclipse target and server platforms, then you might be able to build, but testing will be impossible for you.

Update sites organisation

First, as it is the case in most of "one feature" projects (such as GEF), JWT now has 3 update sites: