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 2018/09/21 13:56:59 UTC

[camel-k] 04/04: Fixing artifact path and selection algorithm

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 37615577b78b19b1ea45d957b2845b28cfbddb95
Author: nferraro <ni...@gmail.com>
AuthorDate: Fri Sep 21 15:55:32 2018 +0200

    Fixing artifact path and selection algorithm
---
 pkg/build/publish/s2i_incremental_publisher.go | 13 +++++++++----
 pkg/build/publish/s2i_publisher.go             |  7 ++++++-
 pkg/stub/action/context/build.go               |  2 +-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/pkg/build/publish/s2i_incremental_publisher.go b/pkg/build/publish/s2i_incremental_publisher.go
index 42d7c81..f3921cc 100644
--- a/pkg/build/publish/s2i_incremental_publisher.go
+++ b/pkg/build/publish/s2i_incremental_publisher.go
@@ -74,13 +74,17 @@ func (p *s2iIncrementalPublisher) selectArtifactsToUpload(entries []build.Classp
 }
 
 func (p *s2iIncrementalPublisher) findBestImage(images []PublishedImage, entries []build.ClasspathEntry) (*PublishedImage, map[string]bool) {
+	if len(images) == 0 {
+		return nil, nil
+	}
 	requiredLibs := make(map[string]bool, len(entries))
 	for _, entry := range entries {
 		requiredLibs[entry.ID] = true
 	}
 
-	var bestImage *PublishedImage
+	var bestImage PublishedImage
 	bestImageCommonLibs := make(map[string]bool, 0)
+	bestImageSurplusLibs := 0
 	for _, image := range images {
 		common := make(map[string]bool)
 		for _, id := range image.Classpath {
@@ -95,11 +99,12 @@ func (p *s2iIncrementalPublisher) findBestImage(images []PublishedImage, entries
 			continue
 		}
 
-		if (numCommonLibs > len(bestImageCommonLibs)) {
-			bestImage = &image
+		if numCommonLibs > len(bestImageCommonLibs) || (numCommonLibs == len(bestImageCommonLibs) && surplus < bestImageSurplusLibs) {
+			bestImage = image
 			bestImageCommonLibs = common
+			bestImageSurplusLibs = surplus
 		}
 	}
 
-	return bestImage, bestImageCommonLibs
+	return &bestImage, bestImageCommonLibs
 }
diff --git a/pkg/build/publish/s2i_publisher.go b/pkg/build/publish/s2i_publisher.go
index ee86a1e..7fd06c2 100644
--- a/pkg/build/publish/s2i_publisher.go
+++ b/pkg/build/publish/s2i_publisher.go
@@ -280,8 +280,13 @@ func (b *s2iPublisher) createTar(assembled build.AssembledOutput, selectedArtifa
 
 	cp := ""
 	for _, entry := range assembled.Classpath {
+		gav, err := maven.ParseGAV(entry.ID)
+		if err != nil {
+			return "", nil
+		}
+		tarPath := path.Join(tarDir, gav.GroupID)
 		_, fileName := path.Split(entry.Location)
-		fileName = path.Join(tarDir, fileName)
+		fileName = path.Join(tarPath, fileName)
 		cp += fileName + "\n"
 	}
 
diff --git a/pkg/stub/action/context/build.go b/pkg/stub/action/context/build.go
index 7b872f4..a0ab58f 100644
--- a/pkg/stub/action/context/build.go
+++ b/pkg/stub/action/context/build.go
@@ -136,7 +136,7 @@ func (l contextLister) ListPublishedImages() ([]publish.PublishedImage, error) {
 	}
 	images := make([]publish.PublishedImage, 0)
 	for _, ctx := range list.Items {
-		if ctx.Labels == nil {
+		if ctx.Status.Phase != v1alpha1.IntegrationContextPhaseReady || ctx.Labels == nil {
 			continue
 		}
 		if ctxType, present := ctx.Labels["camel.apache.org/context.type"]; !present || ctxType != "platform" {