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.ferr...@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" {