astefanutti opened a new pull request #2536:
URL: https://github.com/apache/camel-k/pull/2536
This is a proof-of-concept PR to add Quarkus native build support.
I've tested it successfully on OpenShift (CRC), with a simple YAML
Integration:
```
2021-07-29 10:20:37,254 INFO [org.apa.cam.k.Runtime] (main) Apache Camel K
Runtime 1.8.0
2021-07-29 10:20:37,254 INFO [org.apa.cam.qua.cor.CamelBootstrapRecorder]
(main) Bootstrap runtime: org.apache.camel.quarkus.main.CamelMainRuntime
2021-07-29 10:20:37,255 INFO [org.apa.cam.k.lis.SourcesConfigurer] (main)
Loading routes from: SourceDefinition{name='camel-k-embedded-flow',
language='yaml', type='source',
location='file:/etc/camel/sources/camel-k-embedded-flow.yaml', }
2021-07-29 10:20:37,259 INFO [org.apa.cam.imp.eng.AbstractCamelContext]
(main) Routes startup summary (total:1 started:1)
2021-07-29 10:20:37,259 INFO [org.apa.cam.imp.eng.AbstractCamelContext]
(main) Started route1 (timer://tick)
2021-07-29 10:20:37,259 INFO [org.apa.cam.imp.eng.AbstractCamelContext]
(main) Apache Camel 3.11.0 (camel-1) started in 2ms (build:0ms init:1ms
start:1ms)
2021-07-29 10:20:37,259 INFO [io.quarkus] (main) camel-k-integration
1.6.0-SNAPSHOT native (powered by Quarkus 2.0.0.Final) started in 0.025s.
2021-07-29 10:20:37,259 INFO [io.quarkus] (main) Profile prod activated.
2021-07-29 10:20:37,259 INFO [io.quarkus] (main) Installed features:
[camel-bean, camel-core, camel-k-core, camel-k-runtime, camel-log,
camel-support-common, camel-timer, camel-yaml-dsl, cdi]
2021-07-29 10:20:38,260 INFO [info] (Camel (camel-1) thread #0 -
timer://tick) Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello
Yaml !!!]
```
The first build duration is about 7m43s (including Maven dependencies
download), while a second build is about 7m29s:
```
k get builds.camel.apache.org
NAME PHASE AGE STARTED DURATION
ATTEMPTS
kit-c417u8e3709squm11hl0 Succeeded 10m 10m 7m43.463255655s
kit-c4189u63709squm11hlg Succeeded 7m36s 7m36s 7m29.756844671s
```
Note this is a build performed for a simple Integration, on a CRC cluster.
Also the build image size is reduced to 73.2MB when using the
`quay.io/quarkus/quarkus-distroless-image` base image:
```
docker image ls
REPOSITORY
TAG IMAGE ID CREATED SIZE
default-route-openshift-image-registry.apps-crc.testing/camel-k/camel-k-kit-c4189u63709squm11hlg
<none> 13eb7fb8fb64 5 minutes ago 73.2MB
```
It also works with a JavaScript Integration, by adding the
`quarkus.native.additional-build-args=--language:js` build property. On the
other hand, I've faced a NPE at start time with a Java Integration, during the
JOOR compilation, that seems to rely on reflection.
I've tested it with the
`quay.io/quarkus/ubi-quarkus-mandrel:21.2.0.0-Final-java11` image, but the
native build fails for some reasons.
TODO:
- [ ] Proper configurability (Quarkus trait, disable the JVM trait
automatically, ...)
- [ ] Disable incremental image build automatically
- [ ] Bring support to the Spectrum, Kaniko and Buildah build strategies
**Release Note**
```release-note
feat: Quarkus native build support
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]