You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/11/19 10:31:17 UTC
(camel) 01/01: CAMEL-20125: camel-jbang - Export to camel-main - Allow to configure auth for jib-maven-plugin
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch jbang-auth
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8e822ebef94e363e6a9d161e0e4db8efcee65b17
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Nov 19 11:31:02 2023 +0100
CAMEL-20125: camel-jbang - Export to camel-main - Allow to configure auth for jib-maven-plugin
---
.../modules/ROOT/pages/camel-jbang.adoc | 24 +++++++++++++++++-
.../dsl/jbang/core/commands/ExportCamelMain.java | 29 +++++++++++++++++++++-
.../templates/main-kubernetes-from-auth-pom.tmpl | 4 +++
.../resources/templates/main-kubernetes-pom.tmpl | 10 +++++++-
.../templates/main-kubernetes-to-auth-pom.tmpl | 4 +++
5 files changed, 68 insertions(+), 3 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index c9996a0a3fa..dc4ac941fd5 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -2526,11 +2526,33 @@ jkube.recreate=true
TIP: You can specify the jib-maven-plugin version using the `camel.jbang.jib-maven-plugin-version` property in `application.properties`.
+===== Configuring from and to image
+
+The jib-maven-plugin must be configured with a from and to image. The from image will default be `eclipse-temurin:17-jre`
+for Java 17 and `eclipse-temurin:21-jre` for Java 21. However, companies often have their own base images to be used, so
+you can configure this in the properties (together with authentication if needed):
+
+[source,properties]
+----
+jib.from.image=com.mycompany/base-images/ubi17/java17-builder:latest
+jib.from.auth.username = myuser
+jib.from.auth.password = mypass
+----
+
+The to image is configured in the same way, such as:
+
+[source,properties]
+----
+jib.to.image=com.mycompany/myproject/myapp
+jib.to.auth.username = myuser
+jib.to.auth.password = mypass
+----
+
You can find more details in the https://eclipse.dev/jkube/docs/[Eclipse JKube] and https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin[Jib] documentations.
===== Resource fragments
-Resource fragments allows to store external configuration in YAML resource descriptions, which
+Resource fragments for JKube allows to store external configuration in YAML resource descriptions, which
will be exported to `src/main/jkube` directory.
Camel JBang will export files that ends with `jkube.yaml` or `jkube.yml` into `src/main/jkube` directory.
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index e39290f0f9a..bd9b6d25c9f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -243,23 +243,50 @@ class ExportCamelMain extends Export {
boolean jkube = prop.stringPropertyNames().stream().anyMatch(s -> s.startsWith("jkube."));
if (jkube) {
// include all jib/jkube/label properties
+ String fromImage = null;
for (String key : prop.stringPropertyNames()) {
String value = prop.getProperty(key);
+ if ("jib.from.image".equals(key)) {
+ fromImage = value;
+ }
boolean accept = key.startsWith("jkube.") || key.startsWith("jib.") || key.startsWith("label.");
if (accept) {
sb1.append(String.format(" <%s>%s</%s>%n", key, value, key));
}
}
+ // from image is mandatory so use a default image if none provided
+ if (fromImage == null) {
+ fromImage = "eclipse-temurin:" + javaVersion + "-jre";
+ sb1.append(String.format(" <%s>%s</%s>%n", "jib.from.image", fromImage, "jib.from.image"));
+ }
InputStream is = ExportCamelMain.class.getClassLoader().getResourceAsStream("templates/main-kubernetes-pom.tmpl");
String context2 = IOHelper.loadText(is);
IOHelper.close(is);
+
+ context2 = context2.replaceFirst("\\{\\{ \\.JibMavenPluginVersion }}", jibMavenPluginVersion(settings));
+
+ // image from/to auth
+ String auth = "";
+ if (prop.stringPropertyNames().stream().anyMatch(s -> s.startsWith("jib.from.auth."))) {
+ is = ExportCamelMain.class.getClassLoader().getResourceAsStream("templates/main-kubernetes-from-auth-pom.tmpl");
+ auth = IOHelper.loadText(is);
+ IOHelper.close(is);
+ }
+ context2 = context2.replace("{{ .JibFromImageAuth }}", auth);
+ auth = "";
+ if (prop.stringPropertyNames().stream().anyMatch(s -> s.startsWith("jib.to.auth."))) {
+ is = ExportCamelMain.class.getClassLoader().getResourceAsStream("templates/main-kubernetes-to-auth-pom.tmpl");
+ auth = IOHelper.loadText(is);
+ IOHelper.close(is);
+ }
+ context2 = context2.replace("{{ .JibToImageAuth }}", auth);
+ // http port setting
int port = httpServerPort(settings);
if (port == -1) {
port = 8080;
}
context2 = context2.replaceFirst("\\{\\{ \\.Port }}", String.valueOf(port));
- context2 = context2.replaceFirst("\\{\\{ \\.JibMavenPluginVersion }}", jibMavenPluginVersion(settings));
sb2.append(context2);
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-from-auth-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-from-auth-pom.tmpl
new file mode 100644
index 00000000000..9ec06c4aa27
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-from-auth-pom.tmpl
@@ -0,0 +1,4 @@
+ <auth>
+ <username>${jib.from.auth.username}</username>
+ <password>${jib.from.auth.password}</password>
+ </auth>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl
index 0623bd06a0b..5046b334e23 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl
@@ -3,12 +3,20 @@
<artifactId>jib-maven-plugin</artifactId>
<version>{{ .JibMavenPluginVersion }}</version>
<configuration>
+ <from>
+ <image>${jib.from.image}</image>
+{{ .JibFromImageAuth }}
+ </from>
+ <to>
+ <image>${jib.to.image}</image>
+{{ .JibToImageAuth }}
+ </to>
+ <containerizingMode>packaged</containerizingMode>
<container>
<ports>
<port>{{ .Port }}</port>
</ports>
</container>
- <containerizingMode>packaged</containerizingMode>
</configuration>
</plugin>
<plugin>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-to-auth-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-to-auth-pom.tmpl
new file mode 100644
index 00000000000..9bd2171ee91
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-to-auth-pom.tmpl
@@ -0,0 +1,4 @@
+ <auth>
+ <username>${jib.to.auth.username}</username>
+ <password>${jib.to.auth.password}</password>
+ </auth>