diff --git a/pkg/installer/client/docker.go b/pkg/installer/client/docker.go index 0cbd9674..9194213a 100644 --- a/pkg/installer/client/docker.go +++ b/pkg/installer/client/docker.go @@ -107,7 +107,7 @@ func (c *DockerClient) DownloadArtifact(artifact compiler.Artifact) (compiler.Ar for _, uri := range c.RepoData.Urls { - imageName := fmt.Sprintf("%s:%s", uri, artifact.GetCompileSpec().GetPackage().GetFingerPrint()) + imageName := fmt.Sprintf("%s:%s", uri, artifact.GetCompileSpec().GetPackage().ImageID()) Info("Downloading image", imageName) // imageName := fmt.Sprintf("%s/%s", uri, artifact.GetCompileSpec().GetPackage().GetPackageImageName()) diff --git a/pkg/installer/repository.go b/pkg/installer/repository.go index 07924734..7ad6e3fa 100644 --- a/pkg/installer/repository.go +++ b/pkg/installer/repository.go @@ -333,7 +333,7 @@ func generatePackageImages(b compiler.CompilerBackend, imagePrefix, path string, return nil } - packageImage := fmt.Sprintf("%s:%s", imagePrefix, artifact.GetCompileSpec().GetPackage().GetFingerPrint()) + packageImage := fmt.Sprintf("%s:%s", imagePrefix, artifact.GetCompileSpec().GetPackage().ImageID()) if imagePush && b.ImageAvailable(packageImage) && !force { Info("Image", packageImage, "already present, skipping. use --force-push to override") diff --git a/pkg/package/package.go b/pkg/package/package.go index 5467ae14..82f0f3a0 100644 --- a/pkg/package/package.go +++ b/pkg/package/package.go @@ -46,7 +46,7 @@ type Package interface { GetFingerPrint() string GetPackageName() string - GetPackageImageName() string + ImageID() string Requires([]*DefaultPackage) Package Conflicts([]*DefaultPackage) Package Revdeps(PackageDatabase) Packages @@ -289,8 +289,8 @@ func (p *DefaultPackage) GetPackageName() string { return fmt.Sprintf("%s-%s", p.Name, p.Category) } -func (p *DefaultPackage) GetPackageImageName() string { - return fmt.Sprintf("%s-%s:%s", p.Name, p.Category, p.Version) +func (p *DefaultPackage) ImageID() string { + return strings.ReplaceAll(p.GetFingerPrint(), "+", "-") } // GetBuildTimestamp returns the package build timestamp diff --git a/pkg/package/package_test.go b/pkg/package/package_test.go index d2d11a87..d841d983 100644 --- a/pkg/package/package_test.go +++ b/pkg/package/package_test.go @@ -66,6 +66,17 @@ var _ = Describe("Package", func() { }) }) + Context("ImageID", func() { + It("Returns a correct ImageID escaping unsupported chars", func() { + p := NewPackage("A", "1.0+p1", []*DefaultPackage{}, []*DefaultPackage{}) + Expect(p.ImageID()).To(Equal("A--1.0-p1")) + }) + It("Returns a correct ImageID", func() { + p := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{}) + Expect(p.ImageID()).To(Equal("A--1.0")) + }) + }) + Context("Find label on packages", func() { a := NewPackage("A", ">=1.0", []*DefaultPackage{}, []*DefaultPackage{}) a.AddLabel("project1", "test1")