You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/06/22 10:22:04 UTC
[camel-k] 02/02: fix(buildah): Add fullname default baseImage override into the ip for buildah
This is an automated email from the ASF dual-hosted git repository.
pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit fc859970bb88cbffa3791f4aa6b77f229d750a87
Author: Gaelle Fournier <ga...@gmail.com>
AuthorDate: Wed Jun 14 14:14:32 2023 +0200
fix(buildah): Add fullname default baseImage override into the ip for buildah
---
pkg/builder/buildah.go | 1 +
pkg/platform/defaults.go | 8 ++++
pkg/platform/defaults_test.go | 82 +++++++++++++++++++++++++++++++++++
pkg/util/defaults/defaults_support.go | 4 ++
pkg/util/defaults/defaults_test.go | 2 +
5 files changed, 97 insertions(+)
diff --git a/pkg/builder/buildah.go b/pkg/builder/buildah.go
index 71d35a56f..43f9c7087 100644
--- a/pkg/builder/buildah.go
+++ b/pkg/builder/buildah.go
@@ -20,6 +20,7 @@ package builder
const BuildahPlatform = "BuildahPlatform"
const BuildahImage = "BuildahImage"
const BuildahDefaultImageName = "quay.io/buildah/stable"
+const BuildahDefaultBaseImageName = "docker.io/library/eclipse-temurin:11"
var buildahSupportedOptions = map[string]PublishStrategyOption{
BuildahPlatform: {
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index f6d14829a..aff2bf41b 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -233,6 +233,10 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
if target.Status.Build.BaseImage == "" {
log.Debugf("Integration Platform %s [%s]: setting base image", target.Name, target.Namespace)
target.Status.Build.BaseImage = source.Status.Build.BaseImage
+ // Workaround to ensure the default image from buildah is full name. Any baseImage override is in charge of it's validity
+ if target.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah && defaults.IsBaseImageDefault() {
+ target.Status.Build.BaseImage = builder.BuildahDefaultBaseImageName
+ }
}
if target.Status.Build.Maven.LocalRepository == "" {
@@ -312,6 +316,10 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
if p.Status.Build.BaseImage == "" {
log.Debugf("Integration Platform %s [%s]: setting base image", p.Name, p.Namespace)
p.Status.Build.BaseImage = defaults.BaseImage()
+ // Workaround to ensure the default image from buildah is full name. Any baseImage override is in charge of it's validity
+ if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah && defaults.IsBaseImageDefault() {
+ p.Status.Build.BaseImage = builder.BuildahDefaultBaseImageName
+ }
}
if p.Status.Build.Maven.LocalRepository == "" {
log.Debugf("Integration Platform %s [%s]: setting local repository", p.Name, p.Namespace)
diff --git a/pkg/platform/defaults_test.go b/pkg/platform/defaults_test.go
index 79579b7ed..b2a51fb22 100644
--- a/pkg/platform/defaults_test.go
+++ b/pkg/platform/defaults_test.go
@@ -27,6 +27,7 @@ import (
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
"github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
+ "github.com/apache/camel-k/v2/pkg/builder"
"github.com/apache/camel-k/v2/pkg/util/test"
)
@@ -96,6 +97,87 @@ func TestApplyGlobalPlatformSpec(t *testing.T) {
assert.Equal(t, "global_value2", ip.Status.Build.Maven.Properties["global_prop2"])
}
+func TestPlatformBuildahUpdateOverrideLocalPlatformSpec(t *testing.T) {
+ global := v1.IntegrationPlatform{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: "ns",
+ },
+ Spec: v1.IntegrationPlatformSpec{
+ Build: v1.IntegrationPlatformBuildSpec{
+ PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+ },
+ },
+ }
+
+ c, err := test.NewFakeClient(&global)
+ assert.Nil(t, err)
+
+ err = ConfigureDefaults(context.TODO(), c, &global, false)
+ assert.Nil(t, err)
+ assert.Equal(t, builder.BuildahDefaultBaseImageName, global.Status.Build.BaseImage)
+
+ ip := v1.IntegrationPlatform{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "local-camel-k",
+ Namespace: "ns",
+ },
+ Spec: v1.IntegrationPlatformSpec{
+ Build: v1.IntegrationPlatformBuildSpec{
+ PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+ BaseImage: "overridden",
+ },
+ },
+ }
+
+ ip.ResyncStatusFullConfig()
+
+ applyPlatformSpec(&global, &ip)
+
+ assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyBuildah, ip.Status.Build.PublishStrategy)
+ assert.Equal(t, "overridden", ip.Status.Build.BaseImage)
+}
+
+func TestPlatformBuildahUpdateDefaultLocalPlatformSpec(t *testing.T) {
+
+ global := v1.IntegrationPlatform{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: "ns",
+ },
+ Spec: v1.IntegrationPlatformSpec{
+ Build: v1.IntegrationPlatformBuildSpec{
+ PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+ BaseImage: "overridden",
+ },
+ },
+ }
+
+ c, err := test.NewFakeClient(&global)
+ assert.Nil(t, err)
+
+ err = ConfigureDefaults(context.TODO(), c, &global, false)
+ assert.Nil(t, err)
+ assert.Equal(t, "overridden", global.Status.Build.BaseImage)
+
+ ip := v1.IntegrationPlatform{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "local-camel-k",
+ Namespace: "ns",
+ },
+ Spec: v1.IntegrationPlatformSpec{
+ Build: v1.IntegrationPlatformBuildSpec{
+ PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+ },
+ },
+ }
+
+ ip.ResyncStatusFullConfig()
+
+ applyPlatformSpec(&global, &ip)
+
+ assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyBuildah, ip.Status.Build.PublishStrategy)
+ assert.Equal(t, builder.BuildahDefaultBaseImageName, ip.Status.Build.BaseImage)
+}
+
func TestRetainLocalPlatformSpec(t *testing.T) {
global := v1.IntegrationPlatform{
ObjectMeta: metav1.ObjectMeta{
diff --git a/pkg/util/defaults/defaults_support.go b/pkg/util/defaults/defaults_support.go
index 1c2b28113..ae81ac732 100644
--- a/pkg/util/defaults/defaults_support.go
+++ b/pkg/util/defaults/defaults_support.go
@@ -29,6 +29,10 @@ func BaseImage() string {
return envOrDefault(baseImage, "KAMEL_BASE_IMAGE", "RELATED_IMAGE_BASE")
}
+func IsBaseImageDefault() bool {
+ return baseImage == BaseImage()
+}
+
func OperatorImage() string {
return envOrDefault(fmt.Sprintf("%s:%s", ImageName, Version), "KAMEL_OPERATOR_IMAGE", "KAMEL_K_TEST_OPERATOR_CURRENT_IMAGE")
}
diff --git a/pkg/util/defaults/defaults_test.go b/pkg/util/defaults/defaults_test.go
index 1bc8dbbb9..de9d4f58e 100644
--- a/pkg/util/defaults/defaults_test.go
+++ b/pkg/util/defaults/defaults_test.go
@@ -27,6 +27,7 @@ import (
func TestDefaultBaseImage(t *testing.T) {
assert.NotEmpty(t, BaseImage())
+ assert.True(t, IsBaseImageDefault())
}
func TestOverriddenBaseImage(t *testing.T) {
@@ -35,6 +36,7 @@ func TestOverriddenBaseImage(t *testing.T) {
overriddenImage := "xxx"
assert.NoError(t, os.Setenv(env, overriddenImage))
assert.Equal(t, overriddenImage, BaseImage())
+ assert.False(t, IsBaseImageDefault())
assert.NoError(t, os.Setenv(env, oldEnvVal))
}