You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/02/25 12:07:46 UTC

[camel-k] branch master updated: sanitize dependencies

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

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/master by this push:
     new fde8e1f  sanitize dependencies
fde8e1f is described below

commit fde8e1f049f4664eafe058a51303ce7b592dc450
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Sun Feb 24 18:34:05 2019 +0100

    sanitize dependencies
---
 pkg/builder/builder_steps.go      | 23 +++++++++++++++
 pkg/builder/builder_steps_test.go | 60 ++++++++++++++++++++++++++++++++++++---
 pkg/builder/kaniko/kaniko.go      |  1 +
 pkg/builder/s2i/s2i.go            |  1 +
 pkg/trait/builder_test.go         |  4 +--
 5 files changed, 83 insertions(+), 6 deletions(-)

diff --git a/pkg/builder/builder_steps.go b/pkg/builder/builder_steps.go
index 3fb2be5..6fcd317 100644
--- a/pkg/builder/builder_steps.go
+++ b/pkg/builder/builder_steps.go
@@ -164,6 +164,29 @@ func InjectDependencies(ctx *Context) error {
 	return nil
 }
 
+// SanitizeDependencies --
+func SanitizeDependencies(ctx *Context) error {
+	for i := 0; i < len(ctx.Project.Dependencies); i++ {
+		dep := ctx.Project.Dependencies[i]
+
+		switch dep.GroupID {
+		case "org.apache.camel":
+			//
+			// Remove the version so we force using the one configured by the bom
+			//
+			ctx.Project.Dependencies[i].Version = ""
+		case "org.apache.camel.k":
+			//
+			// Force every runtime dependency to have the required version discardin
+			// any version eventually set on the catalog
+			//
+			ctx.Project.Dependencies[i].Version = ctx.Request.RuntimeVersion
+		}
+	}
+
+	return nil
+}
+
 // ComputeDependencies --
 func ComputeDependencies(ctx *Context) error {
 	p := path.Join(ctx.Path, "maven")
diff --git a/pkg/builder/builder_steps_test.go b/pkg/builder/builder_steps_test.go
index fc69f33..bfad198 100644
--- a/pkg/builder/builder_steps_test.go
+++ b/pkg/builder/builder_steps_test.go
@@ -20,12 +20,10 @@ package builder
 import (
 	"testing"
 
-	"github.com/apache/camel-k/pkg/util/defaults"
-
-	"github.com/apache/camel-k/pkg/util/test"
-
 	"github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/pkg/util/defaults"
 	"github.com/apache/camel-k/pkg/util/maven"
+	"github.com/apache/camel-k/pkg/util/test"
 
 	"github.com/stretchr/testify/assert"
 )
@@ -171,3 +169,57 @@ func TestGenerateProjectWithRepositories(t *testing.T) {
 	assert.False(t, ctx.Project.Repositories[1].Releases.Enabled)
 	assert.True(t, ctx.Project.Repositories[1].Snapshots.Enabled)
 }
+
+func TestSanitizeDependencies(t *testing.T) {
+	catalog, err := test.DefaultCatalog()
+	assert.Nil(t, err)
+
+	ctx := Context{
+		Catalog: catalog,
+		Request: Request{
+			Catalog:        catalog,
+			RuntimeVersion: defaults.RuntimeVersion,
+			Platform: v1alpha1.IntegrationPlatformSpec{
+				Build: v1alpha1.IntegrationPlatformBuildSpec{
+					CamelVersion: catalog.Version,
+				},
+			},
+			Dependencies: []string{
+				"camel:undertow",
+				"mvn:org.apache.camel/camel-core/2.18.0",
+				"mvn:org.apache.camel.k/camel-k-runtime-jvm/1.0.0",
+				"mvn:com.mycompany/my-dep/1.2.3",
+			},
+		},
+	}
+
+	err = GenerateProject(&ctx)
+	assert.Nil(t, err)
+	err = InjectDependencies(&ctx)
+	assert.Nil(t, err)
+	err = SanitizeDependencies(&ctx)
+	assert.Nil(t, err)
+
+	assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+		GroupID:    "org.apache.camel.k",
+		ArtifactID: "camel-k-runtime-jvm",
+		Version:    defaults.RuntimeVersion,
+		Type:       "jar",
+	})
+	assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+		GroupID:    "org.apache.camel",
+		ArtifactID: "camel-core",
+		Type:       "jar",
+	})
+	assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+		GroupID:    "org.apache.camel",
+		ArtifactID: "camel-undertow",
+		Type:       "jar",
+	})
+	assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+		GroupID:    "com.mycompany",
+		ArtifactID: "my-dep",
+		Version:    "1.2.3",
+		Type:       "jar",
+	})
+}
diff --git a/pkg/builder/kaniko/kaniko.go b/pkg/builder/kaniko/kaniko.go
index aa435b8..0c81d0a 100644
--- a/pkg/builder/kaniko/kaniko.go
+++ b/pkg/builder/kaniko/kaniko.go
@@ -25,6 +25,7 @@ import (
 var DefaultSteps = []builder.Step{
 	builder.NewStep("project/generate", builder.ProjectGenerationPhase, builder.GenerateProject),
 	builder.NewStep("project/inject-dependencies", builder.ProjectGenerationPhase+1, builder.InjectDependencies),
+	builder.NewStep("project/sanitize-dependencies", builder.ProjectGenerationPhase+2, builder.SanitizeDependencies),
 	builder.NewStep("build/compute-dependencies", builder.ProjectBuildPhase, builder.ComputeDependencies),
 	builder.NewStep("packager", builder.ApplicationPackagePhase, builder.StandardPackager),
 	builder.NewStep("publisher/kaniko", builder.ApplicationPublishPhase, Publisher),
diff --git a/pkg/builder/s2i/s2i.go b/pkg/builder/s2i/s2i.go
index 32dd119..45c2bab 100644
--- a/pkg/builder/s2i/s2i.go
+++ b/pkg/builder/s2i/s2i.go
@@ -25,6 +25,7 @@ import (
 var DefaultSteps = []builder.Step{
 	builder.NewStep("project/generate", builder.ProjectGenerationPhase, builder.GenerateProject),
 	builder.NewStep("project/inject-dependencies", builder.ProjectGenerationPhase+1, builder.InjectDependencies),
+	builder.NewStep("project/sanitize-dependencies", builder.ProjectGenerationPhase+2, builder.SanitizeDependencies),
 	builder.NewStep("build/compute-dependencies", builder.ProjectBuildPhase, builder.ComputeDependencies),
 	builder.NewStep("packager/incremental", builder.ApplicationPackagePhase, builder.IncrementalPackager),
 	builder.NewStep("publisher/s2i", builder.ApplicationPublishPhase, Publisher),
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 4b62577..4735aca 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -85,7 +85,7 @@ func TestS2IBuilderTrait(t *testing.T) {
 	assert.NotEmpty(t, env.ExecutedTraits)
 	assert.NotNil(t, env.GetTrait(ID("builder")))
 	assert.NotEmpty(t, env.Steps)
-	assert.Len(t, env.Steps, 5)
+	assert.Len(t, env.Steps, 6)
 	assert.Condition(t, func() bool {
 		for _, s := range env.Steps {
 			if s.ID() == "publisher/s2i" && s.Phase() == builder.ApplicationPublishPhase {
@@ -105,7 +105,7 @@ func TestKanikoBuilderTrait(t *testing.T) {
 	assert.NotEmpty(t, env.ExecutedTraits)
 	assert.NotNil(t, env.GetTrait(ID("builder")))
 	assert.NotEmpty(t, env.Steps)
-	assert.Len(t, env.Steps, 5)
+	assert.Len(t, env.Steps, 6)
 	assert.Condition(t, func() bool {
 		for _, s := range env.Steps {
 			if s.ID() == "publisher/kaniko" && s.Phase() == builder.ApplicationPublishPhase {