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 {