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 <lburgazz...@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 {