You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2020/11/05 22:54:14 UTC

[camel-k] 17/19: Move to quarkus.

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

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

commit 95ad3c0c9d1b45388133579de0326d3cdc0683b5
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 5 11:48:17 2020 -0500

    Move to quarkus.
---
 pkg/builder/runtime/quarkus.go | 82 +++++++++++++++++++++++++++++++-----------
 pkg/cmd/inspect.go             | 15 ++++++--
 2 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/pkg/builder/runtime/quarkus.go b/pkg/builder/runtime/quarkus.go
index 06655dc..a98faba 100644
--- a/pkg/builder/runtime/quarkus.go
+++ b/pkg/builder/runtime/quarkus.go
@@ -62,14 +62,23 @@ func loadCamelQuarkusCatalog(ctx *builder.Context) error {
 }
 
 func generateQuarkusProject(ctx *builder.Context) error {
+	p := GenerateQuarkusProjectCommon(ctx.Build.Runtime.Metadata["camel-quarkus.version"], ctx.Build.Runtime.Version, ctx.Build.Runtime.Metadata["quarkus.version"])
+
+	// Add all the properties from the build configuration
+	p.Properties.AddAll(ctx.Build.Properties)
+
+	ctx.Maven.Project = p
+
+	return nil
+}
+
+// GenerateQuarkusProjectCommon --
+func GenerateQuarkusProjectCommon(camelQuarkusVersion string, runtimeVersion string, quarkusVersion string) maven.Project {
 	p := maven.NewProjectWithGAV("org.apache.camel.k.integration", "camel-k-integration", defaults.Version)
 	p.DependencyManagement = &maven.DependencyManagement{Dependencies: make([]maven.Dependency, 0)}
 	p.Dependencies = make([]maven.Dependency, 0)
 	p.Build = &maven.Build{Plugins: make([]maven.Plugin, 0)}
 
-	// Add all the properties from the build configuration
-	p.Properties.AddAll(ctx.Build.Properties)
-
 	// camel-quarkus doe routes discovery at startup but we don't want
 	// this to happen as routes are loaded at runtime and looking for
 	// routes at build time may try to load camel-k-runtime routes builder
@@ -84,14 +93,14 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		maven.Dependency{
 			GroupID:    "org.apache.camel.quarkus",
 			ArtifactID: "camel-quarkus-bom",
-			Version:    ctx.Build.Runtime.Metadata["camel-quarkus.version"],
+			Version:    camelQuarkusVersion,
 			Type:       "pom",
 			Scope:      "import",
 		},
 		maven.Dependency{
 			GroupID:    "org.apache.camel.k",
 			ArtifactID: "camel-k-runtime-bom",
-			Version:    ctx.Build.Runtime.Version,
+			Version:    runtimeVersion,
 			Type:       "pom",
 			Scope:      "import",
 		},
@@ -102,7 +111,7 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		maven.Plugin{
 			GroupID:    "io.quarkus",
 			ArtifactID: "quarkus-maven-plugin",
-			Version:    ctx.Build.Runtime.Metadata["quarkus.version"],
+			Version:    quarkusVersion,
 			Executions: []maven.Execution{
 				{
 					Goals: []string{
@@ -113,9 +122,7 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		},
 	)
 
-	ctx.Maven.Project = p
-
-	return nil
+	return p
 }
 
 func buildQuarkusRunner(ctx *builder.Context) error {
@@ -124,6 +131,16 @@ func buildQuarkusRunner(ctx *builder.Context) error {
 	mc.LocalRepository = ctx.Build.Maven.LocalRepository
 	mc.Timeout = ctx.Build.Maven.GetTimeout().Duration
 
+	err := BuildQuarkusRunnerCommon(mc)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// BuildQuarkusRunnerCommon --
+func BuildQuarkusRunnerCommon(mc maven.Context) error {
 	resourcesPath := path.Join(mc.Path, "src", "main", "resources")
 	if err := os.MkdirAll(resourcesPath, os.ModePerm); err != nil {
 		return errors.Wrap(err, "failure while creating resource folder")
@@ -154,30 +171,55 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 	mc.LocalRepository = ctx.Build.Maven.LocalRepository
 	mc.Timeout = ctx.Build.Maven.GetTimeout().Duration
 
+	// Compute dependencies.
+	content, err := ComputeQuarkusDependenciesCommon(mc, ctx.Catalog.Runtime.Version)
+	if err != nil {
+		return err
+	}
+
+	// Process artifacts list and add it to existing artifacts.
+	artifacts := []v1.Artifact{}
+	artifacts, err = ProcessQuarkusTransitiveDependencies(mc, content)
+	if err != nil {
+		return err
+	}
+	ctx.Artifacts = append(ctx.Artifacts, artifacts...)
+
+	return nil
+}
+
+// ComputeQuarkusDependenciesCommon --
+func ComputeQuarkusDependenciesCommon(mc maven.Context, runtimeVersion string) ([]byte, error) {
 	// Retrieve the runtime dependencies
-	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", ctx.Catalog.Runtime.Version)
+	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", runtimeVersion)
 	if err := maven.Run(mc); err != nil {
-		return errors.Wrap(err, "failure while determining classpath")
+		return nil, errors.Wrap(err, "failure while determining classpath")
 	}
 
 	dependencies := path.Join(mc.Path, "target", "dependencies.yaml")
 	content, err := ioutil.ReadFile(dependencies)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	return content, nil
+}
+
+// ProcessQuarkusTransitiveDependencies --
+func ProcessQuarkusTransitiveDependencies(mc maven.Context, content []byte) ([]v1.Artifact, error) {
 	cp := make(map[string][]v1.Artifact)
-	err = yaml2.Unmarshal(content, &cp)
+	err := yaml2.Unmarshal(content, &cp)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	artifacts := []v1.Artifact{}
 	for _, e := range cp["dependencies"] {
 		_, fileName := path.Split(e.Location)
 
 		gav, err := maven.ParseGAV(e.ID)
 		if err != nil {
-			return err
+			return nil, err
 		}
 
 		//
@@ -186,13 +228,13 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 		if e.Checksum == "" {
 			chksum, err := digest.ComputeSHA1(e.Location)
 			if err != nil {
-				return err
+				return nil, err
 			}
 
 			e.Checksum = "sha1:" + chksum
 		}
 
-		ctx.Artifacts = append(ctx.Artifacts, v1.Artifact{
+		artifacts = append(artifacts, v1.Artifact{
 			ID:       e.ID,
 			Location: e.Location,
 			Target:   path.Join("dependencies", gav.GroupID+"."+fileName),
@@ -207,15 +249,15 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 	//
 	runnerChecksum, err := digest.ComputeSHA1(mc.Path, "target", runner)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
-	ctx.Artifacts = append(ctx.Artifacts, v1.Artifact{
+	artifacts = append(artifacts, v1.Artifact{
 		ID:       runner,
 		Location: path.Join(mc.Path, "target", runner),
 		Target:   path.Join("dependencies", runner),
 		Checksum: "sha1:" + runnerChecksum,
 	})
 
-	return nil
+	return artifacts, nil
 }
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 3eef300..e580552 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -220,7 +220,10 @@ func getTransitiveDependencies(
 	}
 
 	// Create Maven project.
-	project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
+	//project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
+	project := runtime.GenerateQuarkusProjectCommon(
+		catalog.CamelCatalogSpec.Runtime.Metadata["camel-quarkus.version"],
+		defaults.DefaultRuntimeVersion, catalog.CamelCatalogSpec.Runtime.Metadata["quarkus.version"])
 
 	// Inject dependencies into Maven project.
 	err := camel.ManageIntegrationDependencies(&project, dependencies, catalog)
@@ -237,16 +240,22 @@ func getTransitiveDependencies(
 	mc := maven.NewContext(temporaryDirectory, project)
 	mc.LocalRepository = mvn.LocalRepository
 	mc.Timeout = mvn.GetTimeout().Duration
+	// mc.Stdout = os.Stderr
+
+	err = runtime.BuildQuarkusRunnerCommon(mc)
+	if err != nil {
+		return err
+	}
 
 	// Compute dependencies.
-	content, err := runtime.ComputeDependenciesCommon(mc, catalog.Runtime.Version)
+	content, err := runtime.ComputeQuarkusDependenciesCommon(mc, catalog.Runtime.Version)
 	if err != nil {
 		return err
 	}
 
 	// Compose artifacts list.
 	artifacts := []v1.Artifact{}
-	artifacts, err = runtime.ProcessTransitiveDependencies(content)
+	artifacts, err = runtime.ProcessQuarkusTransitiveDependencies(mc, content)
 	if err != nil {
 		return err
 	}