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>
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 istarget
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.
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.
Karaf4:
install karaf:assembly karaf:archive -DskipTests -e
Hawt-App:
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:
-e "MAVEN_DEBUG_ARGS=-X"
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>
Using sti:
sti build git://github.com/dhirajsb/camel-hello-world dhirajsb/fuse-sti dhirajsb/camel-hello-world --loglevel=5
sti build git://github.com/dhirajsb/hawtapp-camel-hello-world dhirajsb/fuse-sti dhirajsb/hawtapp-camel-hello-world --loglevel=5
Using oc new-app:
oc new-app --strategy=source dhirajsb/fuse-sti~git://github.com/dhirajsb/camel-hello-world
oc new-app --strategy=source dhirajsb/fuse-sti~git://github.com/dhirajsb/hawtapp-camel-hello-world