Public | Automated Build

Last pushed: 3 years ago
Short Description
OpenShift 3 S2I builder for OpenShift Fuse karaf4 and hawt-app based maven projects
Full Description


An image that can be used with Openshift's Source To Image in order to build
Karaf4 custom assembly or
Hawt-app based maven projects.


Using sti command:

sti build <git repo url> dhirajsb/fuse-sti <target image name>
docker run <target image name>

Using oc command:

oc new-app --strategy=source dhirajsb/fuse-sti~<git repo url>

Configuring the Karaf4 or hawt-app assembly

The location of the Karaf4 or hawt-app assembly built by the maven project can be provided in multiple ways.

  • Default assembly file *.tar.gz in output directory, which is target by default.
  • By using the -e flag in sti or oc command (e.g. sti build -e "FUSE_ASSEMBLY=my-artifactId-1.0-SNAPSHOT.tar.gz" ....).
  • By setting FUSE_ASSEMBLY property in .sti/environment under the projects source.

Customizing the build

It may be possible that the maven build needs to be customized. For example:

  • To invoke custom goals.
  • To skip tests.
  • To provide custom configuration to the build.
  • To build specific modules inside a multimodule project.
  • To add debug level logging to the Maven build.

The MAVEN_ARGS environment variable can be set to change the behaviour. By default MAVEN_ARGS is set as follows.


install karaf:assembly karaf:archive -DskipTests -e


package hawt-app:build -DskipTests -e

You can override the MAVEN_ARGS like in the example below we tell maven to just build the project with groupId "some.groupId" and artifactId "some.artifactId" and all its module dependencies.

sti build -e "MAVEN_ARGS=install -pl some.groupId:some.artifactId -am" <git repo url> dhirajsb/fuse-sti <target image name>

You can also just override the MAVEN_DEBUG_ARGS environment variable with:


Working with multimodule projects

The example above is pretty handy for multimodule projects. Another useful option is the OUTPUT_DIR environment variable. This variable defines where in the source tree the output will be generated.
By default the image assumes ./target. If its another directory we need to specify the option.

A more complete version of the previous example would then be:

sti build -e "OUTPUT_DIR=path/to/module/target,MAVEN_ARGS=install -pl some.groupId:some.artifactId -am" <git repo url> dhirajsb/fuse-sti <target image name>

Real world examples:

Using sti:

sti build git:// dhirajsb/fuse-sti dhirajsb/camel-hello-world --loglevel=5
sti build git:// dhirajsb/fuse-sti dhirajsb/hawtapp-camel-hello-world --loglevel=5

Using oc new-app:

oc new-app --strategy=source dhirajsb/fuse-sti~git://
oc new-app --strategy=source dhirajsb/fuse-sti~git://
Docker Pull Command
Source Repository