You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/10/13 22:01:33 UTC

[camel-karavan] branch main updated: Fix issues with Tekton Task

This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 0dd6127  Fix issues with Tekton Task
0dd6127 is described below

commit 0dd612762b9b21e00bfdb0192ffd94b7dab76dd8
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Thu Oct 13 18:01:25 2022 -0400

    Fix issues with Tekton Task
---
 .../camel/karavan/service/KubernetesService.java   |  4 +--
 .../java/org/apache/camel/karavan/Constants.java   |  2 +-
 .../camel/karavan/KaravanTektonPipeline.java       |  8 +++---
 .../apache/camel/karavan/KaravanTektonTask.java    | 33 ++++++++++++++++++----
 .../src/main/resources/application.properties      |  2 ++
 5 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/KubernetesService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/KubernetesService.java
index de1b3e4..8d348f2 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/KubernetesService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/KubernetesService.java
@@ -141,8 +141,8 @@ public class KubernetesService {
                 .withServiceAccountName("pipeline")
                 .withParams(new ParamBuilder().withName("PROJECT_ID").withNewValue(project.getProjectId()).build())
                 .withWorkspaces(
-                        new WorkspaceBindingBuilder().withName("m2-cache").withNewPersistentVolumeClaim("karavan-m2-cache", false).build(),
-                        new WorkspaceBindingBuilder().withName("jbang-cache").withNewPersistentVolumeClaim("karavan-jbang-cache", false).build())
+                        new WorkspaceBindingBuilder().withName("karavan-m2-cache").withNewPersistentVolumeClaim("karavan-m2-cache", false).build(),
+                        new WorkspaceBindingBuilder().withName("karavan-jbang-cache").withNewPersistentVolumeClaim("karavan-jbang-cache", false).build())
                 .build();
 
         PipelineRunBuilder pipelineRunBuilder = new PipelineRunBuilder()
diff --git a/karavan-operator/src/main/java/org/apache/camel/karavan/Constants.java b/karavan-operator/src/main/java/org/apache/camel/karavan/Constants.java
index fef10c5..400b454 100644
--- a/karavan-operator/src/main/java/org/apache/camel/karavan/Constants.java
+++ b/karavan-operator/src/main/java/org/apache/camel/karavan/Constants.java
@@ -13,7 +13,7 @@ public final class Constants {
     public static final String ROLEBINDING_KARAVAN_VIEW = "karavan-view";
     public static final String PVC_DATA = "karavan-data";
     public static final String PVC_M2_CACHE = "karavan-m2-cache";
-    public static final String PVC_JBANG = "karavan-jbang";
+    public static final String PVC_JBANG = "karavan-jbang-cache";
 
     public static final String PIPELINE_BUILD_QUARKUS = "karavan-pipeline-build-quarkus";
     public static final String TASK_BUILD_QUARKUS = "karavan-task-build-quarkus";
diff --git a/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonPipeline.java b/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonPipeline.java
index 739653b..13f0007 100644
--- a/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonPipeline.java
+++ b/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonPipeline.java
@@ -60,14 +60,14 @@ public class KaravanTektonPipeline extends CRUDKubernetesDependentResource<Pipel
                                 .withParams(new ParamBuilder().withName("project").withNewValue("$(params.PROJECT_ID)").build())
                                 .withTaskRef(new TaskRefBuilder().withKind("Task").withName(Constants.TASK_BUILD_QUARKUS).build())
                                 .withWorkspaces(
-                                        new WorkspacePipelineTaskBinding("m2-cache", "", "m2-cache"),
-                                        new WorkspacePipelineTaskBinding("jbang-cache", "", "jbang-cache")
+                                        new WorkspacePipelineTaskBinding(Constants.PVC_M2_CACHE, "", Constants.PVC_M2_CACHE),
+                                        new WorkspacePipelineTaskBinding(Constants.PVC_JBANG, "", Constants.PVC_JBANG)
                                 )
                                 .build()
                 )
                 .withWorkspaces(
-                        new PipelineWorkspaceDeclaration("Maven Cache", "m2-cache", false),
-                        new PipelineWorkspaceDeclaration("JBang Cache", "jbang-cache", false)
+                        new PipelineWorkspaceDeclaration("Maven Cache", Constants.PVC_M2_CACHE, false),
+                        new PipelineWorkspaceDeclaration("JBang Cache", Constants.PVC_JBANG, false)
                 )
                 .endSpec()
                 .build();
diff --git a/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonTask.java b/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonTask.java
index 232c360..70d7782 100644
--- a/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonTask.java
+++ b/karavan-operator/src/main/java/org/apache/camel/karavan/KaravanTektonTask.java
@@ -2,6 +2,9 @@ package org.apache.camel.karavan;
 
 import io.fabric8.kubernetes.api.model.EnvVarBuilder;
 import io.fabric8.kubernetes.api.model.EnvVarSourceBuilder;
+import io.fabric8.kubernetes.api.model.Secret;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.tekton.pipeline.v1beta1.ArrayOrString;
 import io.fabric8.tekton.pipeline.v1beta1.ParamSpec;
 import io.fabric8.tekton.pipeline.v1beta1.ParamSpecBuilder;
@@ -39,7 +42,7 @@ public class KaravanTektonTask extends CRUDKubernetesDependentResource<Task, Kar
     @Override
     @SuppressWarnings("unchecked")
     public Task desired(Karavan karavan, Context<Karavan> context) {
-        String script = getScript();
+        String script = getScript(karavan);
         return new TaskBuilder()
                 .withNewMetadata()
                 .withName(Constants.TASK_BUILD_QUARKUS)
@@ -70,26 +73,44 @@ public class KaravanTektonTask extends CRUDKubernetesDependentResource<Task, Kar
                                         new EnvVarBuilder().withName("KAMELETS_GIT_MAIN").withValueFrom(
                                                 new EnvVarSourceBuilder().withNewSecretKeyRef().withName("karavan").withKey("kamelets-git-main").and().build()).build(),
                                         new EnvVarBuilder().withName("IMAGE_REGISTRY").withValueFrom(
-                                                new EnvVarSourceBuilder().withNewSecretKeyRef().withName("karavan").withKey("image-registry").and().build()).build()
+                                                new EnvVarSourceBuilder().withNewSecretKeyRef().withName("karavan").withKey("image-registry").withOptional(true).and().build()).build()
                                 )
                                 .build()
                 )
                 .withWorkspaces(
-                        new WorkspaceDeclaration("Maven Cache", "/root/.m2", "m2-cache", false, false),
-                        new WorkspaceDeclaration("JBang Cache", "/jbang/.jbang/cache", "jbang-cache", false, false)
+                        new WorkspaceDeclaration("Maven Cache", "/root/.m2", Constants.PVC_M2_CACHE, false, false),
+                        new WorkspaceDeclaration("JBang Cache", "/jbang/.jbang/cache", Constants.PVC_JBANG, false, false)
                 )
                 .endSpec()
                 .build();
     }
 
-    protected String getScript() {
+    protected String getScript(Karavan karavan) {
+        boolean removeImageRegistry = !secretHasImageRegistry(karavan);
         try {
             InputStream inputStream = KaravanTektonTask.class.getResourceAsStream("/karavan-quarkus-builder-script.sh");
             String data = new BufferedReader(new InputStreamReader(inputStream))
-                    .lines().collect(Collectors.joining(System.getProperty("line.separator")));
+                    .lines()
+                    .filter(s -> !(removeImageRegistry && s.contains("Dquarkus.container-image.registry=${IMAGE_REGISTRY}")))
+                    .collect(Collectors.joining(System.getProperty("line.separator")));
             return data;
         } catch (Exception e) {
             return null;
         }
     }
+
+    protected boolean secretHasImageRegistry(Karavan karavan) {
+        try {
+            KubernetesClient kubernetesClient = new DefaultKubernetesClient();
+            Secret secret = kubernetesClient.secrets().inNamespace(karavan.getMetadata().getNamespace()).withName(Constants.NAME).get();
+            if (secret != null) {
+                String imageRegistry = secret.getStringData().get("image-registry");
+                System.out.println("imageRegistry = " +imageRegistry);
+                return imageRegistry != null;
+            }
+            return false;
+        } catch (Exception e) {
+            return false;
+        }
+    }
 }
diff --git a/karavan-operator/src/main/resources/application.properties b/karavan-operator/src/main/resources/application.properties
index 792e254..cf95614 100644
--- a/karavan-operator/src/main/resources/application.properties
+++ b/karavan-operator/src/main/resources/application.properties
@@ -9,6 +9,8 @@ quarkus.operator-sdk.bundle.package-name=camel-karavan-operator
 quarkus.kubernetes-client.trust-certs=true
 quarkus.kubernetes.namespace=openshift-operators
 quarkus.kubernetes.service-account=camel-karavan-operator
+quarkus.kubernetes.add-build-timestamp=false
+quarkus.kubernetes.add-version-to-label-selectors=false
 
 quarkus.container-image.build=true
 quarkus.container-image.builder=jib