This is an automated email from the ASF dual-hosted git repository.
wmedvedeo pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git
The following commit(s) were added to refs/heads/main by this push:
new 2f3bc4b4 kie-kogito-serverless-operator-533: Builder image is not used
according to the configuration semantic (#534)
2f3bc4b4 is described below
commit 2f3bc4b485d34fde41e62eccda0bbef349b71b0d
Author: Walter Medvedeo <[email protected]>
AuthorDate: Tue Sep 17 16:13:33 2024 +0200
kie-kogito-serverless-operator-533: Builder image is not used according to
the configuration semantic (#534)
---
controllers/platform/platformutils.go | 13 +++++++-
controllers/platform/platformutils_test.go | 52 ++++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 1 deletion(-)
diff --git a/controllers/platform/platformutils.go
b/controllers/platform/platformutils.go
index 4daabc0c..8b68a5da 100644
--- a/controllers/platform/platformutils.go
+++ b/controllers/platform/platformutils.go
@@ -26,6 +26,8 @@ import (
"strings"
"time"
+
"github.com/apache/incubator-kie-kogito-serverless-operator/controllers/cfg"
+
"github.com/apache/incubator-kie-kogito-serverless-operator/utils"
corev1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -158,10 +160,19 @@ func GetRegistryAddress(ctx context.Context) (*string,
error) {
return nil, nil
}
-// GetCustomizedBuilderDockerfile gets the Dockerfile as defined in the
default platform ConfigMap, apply any custom requirements and return.
+// GetCustomizedBuilderDockerfile determines if the default Dockerfile
provided by the
+// sonataflow-operator-builder-config_v1_configmap.yaml must be customized to
use a different builder base image,
+// before building a workflow.
+// The following ordered criteria are applied:
+// 1) if the current platform has a configured
platform.Spec.Build.Config.BaseImage, that base image must be used.
+// 2) if the current sonataflow-operator-controllers-config.yaml has a
configured SonataFlowBaseBuilderImageTag, that
+// base image must be used.
+// 3) No customization apply.
func GetCustomizedBuilderDockerfile(dockerfile string, platform
operatorapi.SonataFlowPlatform) string {
if len(platform.Spec.Build.Config.BaseImage) > 0 {
dockerfile = strings.Replace(dockerfile,
GetFromImageTagDockerfile(dockerfile), platform.Spec.Build.Config.BaseImage, 1)
+ } else if len(cfg.GetCfg().SonataFlowBaseBuilderImageTag) > 0 {
+ dockerfile = strings.Replace(dockerfile,
GetFromImageTagDockerfile(dockerfile),
cfg.GetCfg().SonataFlowBaseBuilderImageTag, 1)
}
return dockerfile
}
diff --git a/controllers/platform/platformutils_test.go
b/controllers/platform/platformutils_test.go
index d0bcf2cb..2a21f8e8 100644
--- a/controllers/platform/platformutils_test.go
+++ b/controllers/platform/platformutils_test.go
@@ -24,11 +24,17 @@ import (
"regexp"
"testing"
+
"github.com/apache/incubator-kie-kogito-serverless-operator/api/v1alpha08"
+
"github.com/apache/incubator-kie-kogito-serverless-operator/controllers/cfg"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
"github.com/stretchr/testify/assert"
"github.com/apache/incubator-kie-kogito-serverless-operator/test"
)
+const dockerFile = "FROM
docker.io/apache/default-test-kie-sonataflow-builder:main AS builder\n\n# ETC,
\n\n# ETC, \n\n# ETC"
+
func TestSonataFlowBuildController(t *testing.T) {
platform := test.GetBasePlatform()
dockerfileBytes, err := os.ReadFile("../../test/builder/Dockerfile")
@@ -49,3 +55,49 @@ func TestSonataFlowBuildController(t *testing.T) {
assert.NoError(t, err)
assert.True(t, foundProductized)
}
+
+func TestGetCustomizedBuilderDockerfile_NoBaseImageCustomization(t *testing.T)
{
+ sfp := v1alpha08.SonataFlowPlatform{
+ TypeMeta: metav1.TypeMeta{},
+ ObjectMeta: metav1.ObjectMeta{},
+ Spec: v1alpha08.SonataFlowPlatformSpec{},
+ Status: v1alpha08.SonataFlowPlatformStatus{},
+ }
+ customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+ assert.Equal(t, dockerFile, customizedDockerfile)
+}
+
+func TestGetCustomizedBuilderDockerfile_BaseImageCustomizationFromPlatform(t
*testing.T) {
+ sfp := v1alpha08.SonataFlowPlatform{
+ TypeMeta: metav1.TypeMeta{},
+ ObjectMeta: metav1.ObjectMeta{},
+ Spec: v1alpha08.SonataFlowPlatformSpec{
+ Build: v1alpha08.BuildPlatformSpec{
+ Template: v1alpha08.BuildTemplate{},
+ Config: v1alpha08.BuildPlatformConfig{
+ BaseImage:
"docker.io/apache/platfom-sonataflow-builder:main",
+ },
+ },
+ },
+ Status: v1alpha08.SonataFlowPlatformStatus{},
+ }
+
+ expectedDockerFile := "FROM
docker.io/apache/platfom-sonataflow-builder:main AS builder\n\n# ETC, \n\n#
ETC, \n\n# ETC"
+ customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+ assert.Equal(t, expectedDockerFile, customizedDockerfile)
+}
+
+func
TestGetCustomizedBuilderDockerfile_BaseImageCustomizationFromControllersConfig(t
*testing.T) {
+ sfp := v1alpha08.SonataFlowPlatform{
+ TypeMeta: metav1.TypeMeta{},
+ ObjectMeta: metav1.ObjectMeta{},
+ Spec: v1alpha08.SonataFlowPlatformSpec{},
+ Status: v1alpha08.SonataFlowPlatformStatus{},
+ }
+
+ _, err :=
cfg.InitializeControllersCfgAt("../cfg/testdata/controllers-cfg-test.yaml")
+ assert.NoError(t, err)
+ expectedDockerFile := "FROM local/sonataflow-builder:1.0.0 AS
builder\n\n# ETC, \n\n# ETC, \n\n# ETC"
+ customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+ assert.Equal(t, expectedDockerFile, customizedDockerfile)
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]