You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "gansheer (via GitHub)" <gi...@apache.org> on 2023/02/15 09:58:42 UTC

[GitHub] [camel-k] gansheer commented on issue #1656: jib builder

gansheer commented on issue #1656:
URL: https://github.com/apache/camel-k/issues/1656#issuecomment-1431047647

   I spent some time getting to know the existing JIB plugins available. 
   
   The ones I found and tested are:
   * [Quarkus Container Extension Jib](https://quarkus.io/guides/container-image) (camel-k quarkus version) 
   * [Jkube Kubernetes Plugin](https://www.eclipse.org/jkube/docs/kubernetes-maven-plugin/) (version 1.10.1)
   * [Jib maven plugin](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin) (version 3.3.1)
   * [Fabric8 docker plugin](https://dmp.fabric8.io/) (version 0.41.0)
   
   I did some build test using the following requirements :
   * build a container image containing the content from the /tmp/kit-xxxxxx-yyyyy/context instead of the default target folder ( /tmp/kit-xxxxxx-yyyyy/maven/target)
   * build incrementally the container images between multiple integration kits by having some influence on layer build
   * build the container image for different architectures (linux/am64, linux/arm64, etc)
   * producing a container image the most 
   
   The native build still needs to be tested but in the context of container image build is it also about a runner being made available in /tmp/kit-xxxxxx-yyyyy/context after the build phase, so it should be covered but the requirements.
   
   I put all my data here : https://github.com/gansheer/jib-work
   
   **Only two of the tested plugins validate all the requirements** : **Jib maven plugin** and **Fabric8 docker plugin**. Seeing the **Fabric8 docker plugin**'s version is 0.41.0, I feel the **Jib maven plugin** is the best choice.
   
   The **Jkube Kubernetes Plugin** is still a good candidate if it can add the multi-architecture support. I found it offers a lot of flexibility and also come with an Jkube Openshift Plugin built on top of Kubernetes Plugin that has s2i features.
   
   What I see as an implementation roadmap for the addition of a jib publish strategy would be:
   * implement a first version using the **Jib maven plugin** while discussing with the jkube projet to see if the multi-architecture can be added 
   * if (and hopefully when) the **Jkube Kubernetes Plugin** provides the multi-architecure feature, plan a migration to the JKuve plugin
   
   Last notes:
   * Java native build still need to be tested, particularly [the java native build PR](https://github.com/apache/camel-k/pull/4021).  
   * I didn't see anything incompatible with [the build decoupling discussions](https://github.com/apache/camel-k/issues/3831)
   
   Please don't hesitate to tell me your opinions on this and any additional inputs.
   
   cc @lburgazzoli @astefanutti @oscerd @claudio4j @christophd @tadayosi
   


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org