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/10/09 10:32:59 UTC
[camel-k] 01/02: feat(core): Move jib plugins versions to camelcatalog
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 e3e947fb6151aab653a762522ab86f8fe051fb30
Author: Gaelle Fournier <ga...@gmail.com>
AuthorDate: Thu Oct 5 17:22:01 2023 +0200
feat(core): Move jib plugins versions to camelcatalog
Ref #4703
Extracted jib plugin versions to camel-k-runtime:
* use .spec.runtime.metadata values
* set default values for catalog backward compatibility
---
pkg/apis/camel/v1/camelcatalog_types_support.go | 10 ++++++++++
pkg/trait/builder.go | 8 ++++++--
pkg/util/jib/configuration.go | 26 +++++++++++++++----------
pkg/util/jib/configuration_test.go | 19 +++++++++++++++---
4 files changed, 48 insertions(+), 15 deletions(-)
diff --git a/pkg/apis/camel/v1/camelcatalog_types_support.go b/pkg/apis/camel/v1/camelcatalog_types_support.go
index ddc597c6b..98a016170 100644
--- a/pkg/apis/camel/v1/camelcatalog_types_support.go
+++ b/pkg/apis/camel/v1/camelcatalog_types_support.go
@@ -202,6 +202,16 @@ func (c *CamelCatalogSpec) GetQuarkusToolingImage() string {
return c.Runtime.Metadata["quarkus.native-builder-image"]
}
+// GetJibMavenPluginVersion returns the Jib plugin version required to publish an integration kit based on this catalog with jib strategy.
+func (c *CamelCatalogSpec) GetJibMavenPluginVersion() string {
+ return c.Runtime.Metadata["jib.maven-plugin.version"]
+}
+
+// GetJibLayerFilterExtensionMavenVersion returns the Jib layer filter plugin version required to publish an integration kit based on this catalog with jib strategy.
+func (c *CamelCatalogSpec) GetJibLayerFilterExtensionMavenVersion() string {
+ return c.Runtime.Metadata["jib.layer-filter-extension-maven.version"]
+}
+
// HasCapability checks if the given capability is present in the catalog.
func (c *CamelCatalogSpec) HasCapability(capability string) bool {
_, ok := c.Runtime.Capabilities[capability]
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index f1c6a7f49..805ba37ef 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -350,8 +350,12 @@ func (t *builderTrait) builderTask(e *Environment, taskConf *v1.BuildConfigurati
}
if e.Platform.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyJib {
- if err := jib.CreateProfileConfigmap(e.Ctx, e.Client, e.IntegrationKit); err != nil {
- return nil, fmt.Errorf("could not create default maven jib profile: %w. ", err)
+ profile, err := jib.JibMavenProfile(e.CamelCatalog.GetJibMavenPluginVersion(), e.CamelCatalog.GetJibLayerFilterExtensionMavenVersion())
+ if err != nil {
+ return nil, fmt.Errorf("error generating default maven jib profile: %w. ", err)
+ }
+ if err := jib.CreateProfileConfigmap(e.Ctx, e.Client, e.IntegrationKit, profile); err != nil {
+ return nil, fmt.Errorf("could not create default maven jib profile configmap: %w. ", err)
}
t.MavenProfiles = append(t.MavenProfiles, "configmap:"+e.IntegrationKit.Name+"-publish-jib-profile/profile.xml")
}
diff --git a/pkg/util/jib/configuration.go b/pkg/util/jib/configuration.go
index 4497f9c8d..ac54676e4 100644
--- a/pkg/util/jib/configuration.go
+++ b/pkg/util/jib/configuration.go
@@ -38,6 +38,8 @@ const JibMavenToImageParam = "-Djib.to.image="
const JibMavenFromImageParam = "-Djib.from.image="
const JibMavenInsecureRegistries = "-Djib.allowInsecureRegistries="
const JibDigestFile = "target/jib-image.digest"
+const JibMavenPluginVersionDefault = "3.3.2"
+const JibLayerFilterExtensionMavenVersionDefault = "0.3.0"
type JibBuild struct {
Plugins []maven.Plugin `xml:"plugins>plugin,omitempty"`
@@ -50,12 +52,7 @@ type JibProfile struct {
}
// Create a Configmap containing the default jib profile.
-func CreateProfileConfigmap(ctx context.Context, c client.Client, kit *v1.IntegrationKit) error {
- profile, err := jibMavenProfile()
- if err != nil {
- return fmt.Errorf("error generating default maven jib profile: %w. ", err)
- }
-
+func CreateProfileConfigmap(ctx context.Context, c client.Client, kit *v1.IntegrationKit, profile string) error {
annotations := util.CopyMap(kit.Annotations)
controller := true
blockOwnerDeletion := true
@@ -86,23 +83,32 @@ func CreateProfileConfigmap(ctx context.Context, c client.Client, kit *v1.Integr
},
}
- err = c.Create(ctx, jibProfileConfigMap)
+ err := c.Create(ctx, jibProfileConfigMap)
if err != nil && !k8serrors.IsAlreadyExists(err) {
return fmt.Errorf("error creating the configmap containing the default maven jib profile: %s: %w. ", kit.Name+"-publish-jib-profile", err)
}
return nil
}
-func jibMavenProfile() (string, error) {
+// Create a maven profile defining jib plugin build.
+func JibMavenProfile(jibMavenPluginVersion string, jibLayerFilterExtensionMavenVersion string) (string, error) {
+ jibVersion := JibMavenPluginVersionDefault
+ if jibMavenPluginVersion != "" {
+ jibVersion = jibMavenPluginVersion
+ }
+ layerVersion := JibLayerFilterExtensionMavenVersionDefault
+ if jibLayerFilterExtensionMavenVersion != "" {
+ layerVersion = jibLayerFilterExtensionMavenVersion
+ }
jibPlugin := maven.Plugin{
GroupID: "com.google.cloud.tools",
ArtifactID: "jib-maven-plugin",
- Version: "3.3.2",
+ Version: jibVersion,
Dependencies: []maven.Dependency{
{
GroupID: "com.google.cloud.tools",
ArtifactID: "jib-layer-filter-extension-maven",
- Version: "0.3.0",
+ Version: layerVersion,
},
},
Configuration: v1.PluginConfiguration{
diff --git a/pkg/util/jib/configuration_test.go b/pkg/util/jib/configuration_test.go
index 9f5f8ca90..418885f57 100644
--- a/pkg/util/jib/configuration_test.go
+++ b/pkg/util/jib/configuration_test.go
@@ -32,11 +32,24 @@ import (
)
func TestJibMavenProfile(t *testing.T) {
- profile, err := jibMavenProfile()
+ profile, err := JibMavenProfile("3.3.0", "0.2.0")
assert.NoError(t, err)
assert.True(t, strings.HasPrefix(profile, "<profile>"))
assert.True(t, strings.HasSuffix(profile, "</profile>"))
+ assert.True(t, strings.Contains(profile, "<version>3.3.0</version>"))
+ assert.True(t, strings.Contains(profile, "<version>0.2.0</version>"))
+
+}
+
+func TestJibMavenProfileDefaultValues(t *testing.T) {
+ profile, err := JibMavenProfile("", "")
+
+ assert.NoError(t, err)
+ assert.True(t, strings.HasPrefix(profile, "<profile>"))
+ assert.True(t, strings.HasSuffix(profile, "</profile>"))
+ assert.True(t, strings.Contains(profile, "<version>"+JibMavenPluginVersionDefault+"</version>"))
+ assert.True(t, strings.Contains(profile, "<version>"+JibLayerFilterExtensionMavenVersionDefault+"</version>"))
}
@@ -58,7 +71,7 @@ func TestJibConfigMap(t *testing.T) {
},
}
- err := CreateProfileConfigmap(ctx, c, kit)
+ err := CreateProfileConfigmap(ctx, c, kit, "<profile>awesomeprofile</profile>")
assert.NoError(t, err)
key := ctrl.ObjectKey{
@@ -71,5 +84,5 @@ func TestJibConfigMap(t *testing.T) {
assert.Equal(t, cm.OwnerReferences[0].Name, "test")
assert.Equal(t, cm.OwnerReferences[0].UID, types.UID("8dc44a2b-063c-490e-ae02-1fab285ac70a"))
assert.NotNil(t, cm.Data["profile.xml"])
-
+ assert.True(t, strings.Contains(cm.Data["profile.xml"], "awesome"))
}