Use common ImageID() when computing final images

It also adds tests and strip invalid "+" character which is not
supported in docker image tags
This commit is contained in:
Ettore Di Giacinto
2021-03-07 11:01:08 +01:00
parent 94f692266c
commit 9eda81667b
4 changed files with 16 additions and 5 deletions

View File

@@ -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())

View File

@@ -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")

View File

@@ -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

View File

@@ -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")