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

nfilotto pushed a commit to branch 3350/allow-to-set-custom-images
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 53dc1a58e7d273b5d2f4059d03e511608f3f7a70
Author: Nicolas Filotto <nfilo...@talend.com>
AuthorDate: Fri Aug 19 18:35:40 2022 +0200

    feat(cli): Allow to specify custom kaniko and buildah images
---
 pkg/apis/camel/v1/build_types.go                   |  4 ++++
 .../camel/v1/integrationplatform_types_support.go  | 10 ++++++++
 pkg/builder/buildah.go                             |  2 ++
 pkg/builder/kaniko.go                              |  4 ++++
 pkg/cmd/install.go                                 | 27 +++++++++++++++++++---
 pkg/cmd/install_test.go                            | 21 +++++++++++++++++
 pkg/controller/build/build_pod.go                  |  5 ++--
 pkg/controller/integrationplatform/kaniko_cache.go |  7 +++++-
 pkg/resources/resources.go                         | 20 ++++++++--------
 pkg/trait/builder.go                               | 19 ++++++++++++++-
 10 files changed, 101 insertions(+), 18 deletions(-)

diff --git a/pkg/apis/camel/v1/build_types.go b/pkg/apis/camel/v1/build_types.go
index 0de3fd47c..631d761b0 100644
--- a/pkg/apis/camel/v1/build_types.go
+++ b/pkg/apis/camel/v1/build_types.go
@@ -111,6 +111,8 @@ type BuildahTask struct {
        Platform string `json:"platform,omitempty"`
        // log more information
        Verbose *bool `json:"verbose,omitempty"`
+       // name of the docker image to use
+       Image string `json:"image,omitempty"`
 }
 
 // KanikoTask is used to configure Kaniko
@@ -121,6 +123,8 @@ type KanikoTask struct {
        Verbose *bool `json:"verbose,omitempty"`
        // use a cache
        Cache KanikoTaskCache `json:"cache,omitempty"`
+       // name of the docker image to use
+       Image string `json:"image,omitempty"`
 }
 
 // KanikoTaskCache is used to configure Kaniko cache
diff --git a/pkg/apis/camel/v1/integrationplatform_types_support.go 
b/pkg/apis/camel/v1/integrationplatform_types_support.go
index fdd53b664..32d3ccc34 100644
--- a/pkg/apis/camel/v1/integrationplatform_types_support.go
+++ b/pkg/apis/camel/v1/integrationplatform_types_support.go
@@ -186,6 +186,16 @@ func (b IntegrationPlatformBuildSpec) 
IsOptionEnabled(option string) bool {
        return false
 }
 
+// Add a publish strategy option
+func (b *IntegrationPlatformBuildSpec) AddOption(option string, value string) {
+       options := b.PublishStrategyOptions
+       if options == nil {
+               options = make(map[string]string)
+               b.PublishStrategyOptions = options
+       }
+       options[option] = value
+}
+
 // GetTimeout returns the specified duration or a default one
 func (b IntegrationPlatformBuildSpec) GetTimeout() metav1.Duration {
        if b.Timeout == nil {
diff --git a/pkg/builder/buildah.go b/pkg/builder/buildah.go
index d900ec1fe..cec77ef4a 100644
--- a/pkg/builder/buildah.go
+++ b/pkg/builder/buildah.go
@@ -18,3 +18,5 @@ limitations under the License.
 package builder
 
 const BuildahPlatform = "BuildahPlatform"
+const BuildahImage = "BuildahImage"
+const BuildahDefaultImage = "quay.io/buildah/stable"
diff --git a/pkg/builder/kaniko.go b/pkg/builder/kaniko.go
index 260dc72ec..df44551b3 100644
--- a/pkg/builder/kaniko.go
+++ b/pkg/builder/kaniko.go
@@ -21,3 +21,7 @@ package builder
 const KanikoCacheDir = "/kaniko/cache"
 const KanikoPVCName = "KanikoPersistentVolumeClaim"
 const KanikoBuildCacheEnabled = "KanikoBuildCacheEnabled"
+const KanikoExecutorImage = "KanikoExecutorImage"
+const KanikoWarmerImage = "KanikoWarmerImage"
+const KanikoDefaultExecutorImage = "gcr.io/kaniko-project/executor"
+const KanikoDefaultWarmerImage = "gcr.io/kaniko-project/warmer"
diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go
index 1185c50b6..c4da20c31 100644
--- a/pkg/cmd/install.go
+++ b/pkg/cmd/install.go
@@ -110,7 +110,14 @@ func newCmdInstall(rootCmdOptions *RootCmdOptions) 
(*cobra.Command, *installCmdO
        cmd.Flags().String("build-publish-strategy", "", "Set the build publish 
strategy")
        cmd.Flags().String("build-timeout", "", "Set how long the build process 
can last")
        cmd.Flags().String("trait-profile", "", "The profile to use for traits")
+
+       // Kaniko
        cmd.Flags().Bool("kaniko-build-cache", false, "To enable or disable the 
Kaniko cache")
+       cmd.Flags().String("kaniko-executor-image", "", "The name of the docker 
image of the Kaniko executor")
+       cmd.Flags().String("kaniko-warmer-image", "", "The name of the docker 
image of the Kaniko warmer")
+
+       // Buildah
+       cmd.Flags().String("buildah-image", "", "The name of the docker image 
to use for Buildah")
 
        // OLM
        cmd.Flags().Bool("olm", true, "Try to install everything via OLM 
(Operator Lifecycle Manager) if available")
@@ -165,6 +172,7 @@ func newCmdInstall(rootCmdOptions *RootCmdOptions) 
(*cobra.Command, *installCmdO
 type installCmdOptions struct {
        *RootCmdOptions
        Wait                     bool     `mapstructure:"wait"`
+       BuildahImage             string   `mapstructure:"buildah-image"`
        ClusterSetupOnly         bool     `mapstructure:"cluster-setup"`
        SkipOperatorSetup        bool     `mapstructure:"skip-operator-setup"`
        SkipClusterSetup         bool     `mapstructure:"skip-cluster-setup"`
@@ -173,6 +181,8 @@ type installCmdOptions struct {
        ExampleSetup             bool     `mapstructure:"example"`
        Global                   bool     `mapstructure:"global"`
        KanikoBuildCache         bool     `mapstructure:"kaniko-build-cache"`
+       KanikoExecutorImage      string   `mapstructure:"kaniko-executor-image"`
+       KanikoWarmerImage        string   `mapstructure:"kaniko-warmer-image"`
        Save                     bool     `mapstructure:"save" kamel:"omitsave"`
        Force                    bool     `mapstructure:"force"`
        Olm                      bool     `mapstructure:"olm"`
@@ -480,11 +490,22 @@ func (o *installCmdOptions) install(cobraCmd 
*cobra.Command, _ []string) error {
                        }
                }
 
-               kanikoBuildCacheFlag := 
cobraCmd.Flags().Lookup("kaniko-build-cache")
-               if kanikoBuildCacheFlag.Changed {
-                       
platform.Spec.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled] = 
strconv.FormatBool(o.KanikoBuildCache)
+               if platform.Spec.Build.PublishStrategy == 
v1.IntegrationPlatformBuildPublishStrategyKaniko {
+                       kanikoBuildCacheFlag := 
cobraCmd.Flags().Lookup("kaniko-build-cache")
+                       if kanikoBuildCacheFlag.Changed {
+                               
platform.Spec.Build.AddOption(builder.KanikoBuildCacheEnabled, 
strconv.FormatBool(o.KanikoBuildCache))
+                       }
+                       if o.KanikoExecutorImage != "" {
+                               
platform.Spec.Build.AddOption(builder.KanikoExecutorImage, 
o.KanikoExecutorImage)
+                       }
+                       if o.KanikoWarmerImage != "" {
+                               
platform.Spec.Build.AddOption(builder.KanikoWarmerImage, o.KanikoWarmerImage)
+                       }
                }
 
+               if platform.Spec.Build.PublishStrategy == 
v1.IntegrationPlatformBuildPublishStrategyBuildah && o.BuildahImage != "" {
+                       platform.Spec.Build.AddOption(builder.BuildahImage, 
o.BuildahImage)
+               }
                // Always create a platform in the namespace where the operator 
is located
                err = install.ObjectOrCollect(o.Context, c, namespace, 
collection, o.Force, platform)
                if err != nil {
diff --git a/pkg/cmd/install_test.go b/pkg/cmd/install_test.go
index c1aaaee59..27007a60a 100644
--- a/pkg/cmd/install_test.go
+++ b/pkg/cmd/install_test.go
@@ -164,6 +164,27 @@ func TestInstallKanikoBuildCacheFlag(t *testing.T) {
        assert.Equal(t, true, installCmdOptions.KanikoBuildCache)
 }
 
+func TestInstallKanikoExecutorImage(t *testing.T) {
+       installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
+       _, err := test.ExecuteCommand(rootCmd, cmdInstall, 
"--kaniko-executor-image", "some-executor-image")
+       assert.Nil(t, err)
+       assert.Equal(t, "some-executor-image", 
installCmdOptions.KanikoExecutorImage)
+}
+
+func TestInstallKanikoWarmerImage(t *testing.T) {
+       installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
+       _, err := test.ExecuteCommand(rootCmd, cmdInstall, 
"--kaniko-warmer-image", "some-warmer-image")
+       assert.Nil(t, err)
+       assert.Equal(t, "some-warmer-image", 
installCmdOptions.KanikoWarmerImage)
+}
+
+func TestInstallBuildahImage(t *testing.T) {
+       installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
+       _, err := test.ExecuteCommand(rootCmd, cmdInstall, "--buildah-image", 
"some-buildah-image")
+       assert.Nil(t, err)
+       assert.Equal(t, "some-buildah-image", installCmdOptions.BuildahImage)
+}
+
 func TestInstallLocalRepositoryFlag(t *testing.T) {
        installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
        _, err := test.ExecuteCommand(rootCmd, cmdInstall, 
"--maven-local-repository", "someString")
diff --git a/pkg/controller/build/build_pod.go 
b/pkg/controller/build/build_pod.go
index 1ebb74c52..b801f8e58 100644
--- a/pkg/controller/build/build_pod.go
+++ b/pkg/controller/build/build_pod.go
@@ -19,7 +19,6 @@ package build
 
 import (
        "context"
-       "fmt"
        "os"
        "path"
        "strconv"
@@ -326,7 +325,7 @@ func addBuildahTaskToPod(ctx context.Context, c 
ctrl.Reader, build *v1.Build, ta
 
        container := corev1.Container{
                Name:            task.Name,
-               Image:           fmt.Sprintf("quay.io/buildah/stable:v%s", 
defaults.BuildahVersion),
+               Image:           task.Image,
                ImagePullPolicy: corev1.PullIfNotPresent,
                Command:         []string{"/bin/sh", "-c"},
                Args:            []string{strings.Join(args, " && ")},
@@ -438,7 +437,7 @@ func addKanikoTaskToPod(ctx context.Context, c ctrl.Reader, 
build *v1.Build, tas
 
        container := corev1.Container{
                Name:            task.Name,
-               Image:           
fmt.Sprintf("gcr.io/kaniko-project/executor:v%s", defaults.KanikoVersion),
+               Image:           task.Image,
                ImagePullPolicy: corev1.PullIfNotPresent,
                Args:            args,
                Env:             env,
diff --git a/pkg/controller/integrationplatform/kaniko_cache.go 
b/pkg/controller/integrationplatform/kaniko_cache.go
index 6292eea9b..a4b97bb21 100644
--- a/pkg/controller/integrationplatform/kaniko_cache.go
+++ b/pkg/controller/integrationplatform/kaniko_cache.go
@@ -46,6 +46,11 @@ func createKanikoCacheWarmerPod(ctx context.Context, client 
client.Client, platf
                pvcName = persistentVolumeClaim
        }
 
+       warmerImage := fmt.Sprintf("%s:v%s", builder.KanikoDefaultWarmerImage, 
defaults.KanikoVersion)
+       if image, found := 
platform.Status.Build.PublishStrategyOptions[builder.KanikoWarmerImage]; found {
+               warmerImage = image
+       }
+
        pod := corev1.Pod{
                TypeMeta: metav1.TypeMeta{
                        APIVersion: corev1.SchemeGroupVersion.String(),
@@ -62,7 +67,7 @@ func createKanikoCacheWarmerPod(ctx context.Context, client 
client.Client, platf
                        Containers: []corev1.Container{
                                {
                                        Name:  "warm-kaniko-cache",
-                                       Image: 
fmt.Sprintf("gcr.io/kaniko-project/warmer:v%s", defaults.KanikoVersion),
+                                       Image: warmerImage,
                                        Args: []string{
                                                "--cache-dir=" + 
builder.KanikoCacheDir,
                                                "--image=" + 
platform.Status.Build.BaseImage,
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index 44e677f71..f8419d0c9 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -138,23 +138,23 @@ var assets = func() http.FileSystem {
                "/crd/bases/camel.apache.org_integrationplatforms.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             
"camel.apache.org_integrationplatforms.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 174371,
+                       uncompressedSize: 177901,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdb\x36\xb6\x30\xfe\x7f\x3e\x05\xc6\xfd\x23\x4e\xc6\x92\x9b\xdd\xdb\xdd\x5e\xdf\xe9\x3c\x8f\xd7\x49\x5b\x37\x71\xec\x6b\x39\xb9\x77\xa7\xed\x54\x10\x79\x24\x21\x22\x01\x2e\x00\xca\x51\x7f\xfb\xfb\xee\xcf\xe0\x00\x20\x29\x89\x04\x29\xc9\x6f\x6d\xc4\xce\xec\xc6\x36\x01\x1e\x1c\x1c\x9c\x37\x9c\x97\xaf\x48\xef\xee\x9e\x67\x5f\x91\x77\x2c\x02\xae\x20\x26\x5a\x10\x3d\x05\x72\x9a\xd1\x68\x0a\x64\x20\xc6\xfa\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfd\x73\xdb\x36\xb6\x30\x8e\xff\x9e\xbf\x02\xe3\xce\x9d\x38\x19\x49\x4e\xba\xb7\xbb\xbd\x7e\xa6\xf3\x3c\xae\x93\xb6\x6e\xe2\xd8\xd7\x76\x72\xef\x4e\xdb\xa9\x20\xf2\x48\x42\x4c\x02\x5c\x00\x94\xad\x7e\xf7\xfb\xbf\x7f\x06\x07\x00\x49\x49\x24\x48\x49\x7e\x6b\x23\x76\x66\x37\xb6\x09\xf0\xe0\xe0\xe0\xbc\xe1\xbc\x7c\x45\xfa\x77\xf7\x3c\xfb\x8a\xbc\x67\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\xa3\x8c\x46\x53\x20\x97\x62\x
 [...]
                },
                "/crd/bases/camel.apache.org_integrations.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             "camel.apache.org_integrations.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 470929,
+                       uncompressedSize: 472694,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x1b\x37\xf6\x28\xf8\xbf\x3f\x05\x4a\x49\x5d\x49\x13\x91\xb2\x33\x73\x53\xbf\xf1\x4e\xdd\x94\x46\x92\x13\x6d\x6c\x99\x65\x29\xc9\x4d\x39\x9e\x04\xec\x06\x49\x5c\x35\x81\x1e\x00\x4d\x89\xbf\xf5\x7e\xf7\x2d\x1c\x00\xfd\xe0\xab\x0f\x5a\xa2\xe3\xcc\x36\xa6\x6a\x62\x52\xec\xd3\x78\x1c\x9c\xf7\xe3\x0b\x32\x78\xba\xf1\xec\x0b\xf2\x9a\x27\x4c\x68\x96\x12\x23\x89\x99\x31\x72\x96\xd3\x64\xc6\xc8\x8d\x9c\x98\x7b\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x1b\x37\xf6\x28\xf8\xbf\x3f\x05\x4a\x49\x5d\x49\x13\x91\xb2\x33\x73\x53\xbf\xf1\x4e\xdd\x94\x46\x92\x13\x6d\x6c\x99\x65\x29\xc9\x4d\x39\x9e\x04\xec\x06\x49\x5c\x35\x81\x1e\x00\x4d\x89\xbf\xf5\x7e\xf7\x2d\x1c\x00\xfd\xe0\xab\x0f\x5a\xa2\xe3\xcc\x36\xa6\x6a\x62\x52\xec\xd3\x78\x1c\x9c\xf7\xe3\x0b\x32\x78\xba\xf1\xec\x0b\xf2\x9a\x27\x4c\x68\x96\x12\x23\x89\x99\x31\x72\x96\xd3\x64\xc6\xc8\x8d\x9c\x98\x7b\x
 [...]
                },
                "/crd/bases/camel.apache.org_kameletbindings.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             
"camel.apache.org_kameletbindings.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 543879,
+                       uncompressedSize: 545786,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfd\x73\x1b\x37\xb2\x2f\x8c\xff\xee\xbf\x02\x25\xa7\xae\xa4\x13\x92\xb2\xb3\xbb\xa9\xb3\xfe\x6e\xdd\x94\x56\x96\x13\x7d\x63\xcb\x2c\x4b\x71\x6e\xca\xc9\x49\xc0\x19\x90\xc4\xd5\x10\x98\x05\x30\x94\xb8\x8f\x9f\xff\xfd\x29\x34\x80\x79\xe1\x9b\xd0\x43\x51\x51\x36\x83\x53\x75\x36\x92\x35\x3d\x18\x00\xdd\xe8\xee\x4f\xbf\x3c\x27\xfd\x87\x1b\xcf\x9e\x93\xb7\x3c\x61\x42\xb3\x94\x18\x49\xcc\x94\x91\xd3\x9c\x26\x53\x46\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfd\x73\x1b\x37\xb2\x2f\x8c\xff\xee\xbf\x02\x25\xa7\xae\xa4\x13\x92\xb2\xb3\xbb\xa9\xb3\xfe\x6e\xdd\x94\x56\x96\x13\x7d\x63\xcb\x2c\x4b\x71\x6e\xca\xc9\x49\xc0\x19\x90\xc4\xd5\x10\x98\x05\x30\x94\xb8\x8f\x9f\xff\xfd\x29\x34\x80\x79\xe1\x9b\xd0\x43\x51\x51\x36\x83\x53\x75\x36\x92\x35\x3d\x18\x00\xdd\xe8\xee\x4f\xbf\x3c\x27\xfd\x87\x1b\xcf\x9e\x93\xb7\x3c\x61\x42\xb3\x94\x18\x49\xcc\x94\x91\xd3\x9c\x26\x53\x46\x
 [...]
                },
                "/crd/bases/camel.apache.org_kamelets.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             "camel.apache.org_kamelets.yaml",
@@ -420,9 +420,9 @@ var assets = func() http.FileSystem {
                "/rbac/operator-role.yaml": &vfsgen۰CompressedFileInfo{
                        name:             "operator-role.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 2928,
+                       uncompressedSize: 2952,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x56\xc1\x6e\xe3\x36\x10\xbd\xeb\x2b\x06\xd6\x65\x17\x88\xed\xb6\xa7\xc2\x3d\xb9\xbb\x49\x6b\x74\x61\x03\x91\xb7\x8b\x3d\x8e\xc8\xb1\x3c\x35\xc5\x61\x49\x2a\x8e\xfb\xf5\x05\x65\x29\x76\x22\x3b\x28\xba\x8b\x6e\x7d\x09\x45\x4e\xde\xbc\x79\xef\x51\x50\x0e\xe3\xaf\xf7\xcb\x72\xf8\xc0\x8a\x6c\x20\x0d\x51\x20\x6e\x09\xe6\x0e\xd5\x96\xa0\x90\x4d\xdc\xa3\x27\xb8\x93\xc6\x6a\x8c\x2c\x16\xde\xcc\x8b\xbb\xb7\xd0\x58\x4d\x1e\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x56\xc1\x6e\xdb\x46\x10\xbd\xf3\x2b\x06\xe2\x25\x01\x2c\xa9\xed\xa9\x50\x4f\x6a\x62\xb7\x42\x03\x09\xb0\x94\x06\x39\x0e\x97\x23\x6a\xaa\xe5\xce\x76\x76\x69\x59\xfd\xfa\x62\x29\x32\x92\x4d\x2b\x28\x9a\xa0\xa9\x2e\x5e\xee\x8e\xdf\xbc\x79\xef\x2d\xc1\x1c\xc6\x5f\xef\x97\xe5\xf0\x8e\x0d\xb9\x40\x25\x44\x81\xb8\x23\x98\x7b\x34\x3b\x82\xb5\x6c\xe3\x01\x95\xe0\x4e\x1a\x57\x62\x64\x71\xf0\x6a\xbe\xbe\x7b\x0d\x8d\x2b\x49\x
 [...]
                },
                "/rbac/patch-role-to-clusterrole.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             "patch-role-to-clusterrole.yaml",
@@ -604,9 +604,9 @@ var assets = func() http.FileSystem {
                "/traits.yaml": &vfsgen۰CompressedFileInfo{
                        name:             "traits.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 51862,
+                       uncompressedSize: 53036,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfb\x73\x1b\xb9\xd1\xe0\xef\xfb\x57\xa0\x94\xab\xb2\xa4\x22\x29\xef\xe6\x4b\xb2\xa7\xbb\xfd\x72\x5a\xdb\x9b\x68\xd7\x0f\x9d\xa5\xdd\x7c\x29\x9f\x2b\x04\x67\x9a\x24\xcc\x21\x30\x01\x30\x92\x99\xcb\xfd\xef\x57\xe8\x6e\x3c\x86\x0f\x89\xb2\xad\xbd\xe8\xea\xcb\x56\xc5\x22\x39\x03\x34\x1a\xdd\x8d\x7e\xc3\x5b\xa9\xbc\x3b\xfd\x6a\x28\xb4\x5c\xc2\xa9\xf8\xad\xab\x64\x03\x5f\x09\xd1\x36\xd2\x4f\x8d\x5d\x9e\x8a\xa9\x6c\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x1b\xb9\xb5\x20\xfe\xff\x7c\x0a\x94\xee\xef\x96\x25\x17\x49\x79\x26\x77\x72\xe7\xa7\xdd\xb9\x59\x8d\xed\x49\x34\xe3\x87\xd6\xf2\x4c\x6e\xca\xeb\x0a\xc1\x6e\x90\x84\xd9\x04\x3a\x00\x5a\x32\xb3\xd9\xef\xbe\x85\xf3\x00\xd0\x64\x4b\xa2\x6c\x6b\x36\xda\xda\x4c\x55\x2c\x92\xdd\xc0\xc1\xc1\x39\x07\xe7\x8d\xe0\xa4\x0e\xfe\xe4\xab\xb1\x30\x72\xad\x4e\xc4\xef\x7c\x25\x1b\xf5\x95\x10\x6d\x23\xc3\xdc\xba\xf5\x89\x
 [...]
                },
        }
        fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index fff4aff9d..aac72c4d6 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -27,6 +27,7 @@ import (
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        traitv1 "github.com/apache/camel-k/pkg/apis/camel/v1/trait"
        "github.com/apache/camel-k/pkg/builder"
+       "github.com/apache/camel-k/pkg/util/defaults"
        mvn "github.com/apache/camel-k/pkg/util/maven"
        "github.com/apache/camel-k/pkg/util/property"
 )
@@ -104,7 +105,13 @@ func (t *builderTrait) Apply(e *Environment) error {
                } else {
                        t.L.Infof("User defined %s platform, will be used from 
buildah!", platform)
                }
-
+               var buildahImage string
+               if image, found := 
e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoExecutorImage]; 
found {
+                       buildahImage = image
+                       t.L.Infof("User defined image %s will be used for 
buildah", image)
+               } else {
+                       buildahImage = fmt.Sprintf("%s:v%s", 
builder.BuildahDefaultImage, defaults.BuildahVersion)
+               }
                e.BuildTasks = append(e.BuildTasks, v1.Task{Buildah: 
&v1.BuildahTask{
                        Platform: platform,
                        BaseTask: v1.BaseTask{
@@ -115,6 +122,7 @@ func (t *builderTrait) Apply(e *Environment) error {
                                Registry: e.Platform.Status.Build.Registry,
                        },
                        Verbose: t.Verbose,
+                       Image:   buildahImage,
                }})
        // nolint: staticcheck
        case v1.IntegrationPlatformBuildPublishStrategyKaniko:
@@ -129,6 +137,14 @@ func (t *builderTrait) Apply(e *Environment) error {
                        cacheEnabled = *e.Platform.Status.Build.KanikoBuildCache
                }
 
+               var kanikoImage string
+               if image, found := 
e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoExecutorImage]; 
found {
+                       kanikoImage = image
+                       t.L.Infof("User defined executor image %s will be used 
for kaniko", image)
+               } else {
+                       kanikoImage = fmt.Sprintf("%s:v%s", 
builder.KanikoDefaultExecutorImage, defaults.KanikoVersion)
+               }
+
                e.BuildTasks = append(e.BuildTasks, v1.Task{Kaniko: 
&v1.KanikoTask{
                        BaseTask: v1.BaseTask{
                                Name: "kaniko",
@@ -142,6 +158,7 @@ func (t *builderTrait) Apply(e *Environment) error {
                                PersistentVolumeClaim: persistentVolumeClaim,
                        },
                        Verbose: t.Verbose,
+                       Image:   kanikoImage,
                }})
        }
 

Reply via email to