From 26b94888c3a1dc2f190891fc649f0fbf66b5ac4f Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 15 Feb 2020 22:53:00 +0100 Subject: [PATCH] Skip image building if we pulled them successfully --- pkg/compiler/compiler.go | 45 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index eca00f42..b8d1891b 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -272,12 +272,6 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage packageImage = cs.ImageRepository + "-" + p.GetPackage().GetFingerPrint() } - if cs.Options.PullFirst { - //Best effort pull - cs.Backend.DownloadImage(CompilerBackendOptions{ImageName: buildertaggedImage}) - cs.Backend.DownloadImage(CompilerBackendOptions{ImageName: packageImage}) - } - Info(pkgTag, "Generating :whale: definition for builder image from", image) // First we create the builder image @@ -289,19 +283,25 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage Destination: p.Rel(p.GetPackage().GetFingerPrint() + "-builder.image.tar"), } - err = cs.Backend.BuildImage(builderOpts) - if err != nil { - return nil, errors.Wrap(err, "Could not build image: "+image+" "+builderOpts.DockerFileName) + buildBuilderImage := true + if cs.Options.PullFirst { + if err := cs.Backend.DownloadImage(builderOpts); err == nil { + buildBuilderImage = false + } } - err = cs.Backend.ExportImage(builderOpts) - if err != nil { + if buildBuilderImage { + if err = cs.Backend.BuildImage(builderOpts); err != nil { + return nil, errors.Wrap(err, "Could not build image: "+image+" "+builderOpts.DockerFileName) + } + } + + if err = cs.Backend.ExportImage(builderOpts); err != nil { return nil, errors.Wrap(err, "Could not export image") } - if cs.Options.Push { - err = cs.Backend.Push(builderOpts) - if err != nil { + if cs.Options.Push && buildBuilderImage { + if err = cs.Backend.Push(builderOpts); err != nil { return nil, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName) } } @@ -320,14 +320,25 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage // return nil, errors.Wrap(err, "Could not export image to tar") // } // } else { - if err := cs.Backend.BuildImage(runnerOpts); err != nil { - return nil, errors.Wrap(err, "Failed building image for "+runnerOpts.ImageName+" "+runnerOpts.DockerFileName) + buildPackageImage := true + if cs.Options.PullFirst { + //Best effort pull + if err := cs.Backend.DownloadImage(runnerOpts); err == nil { + buildPackageImage = false + } } + + if buildPackageImage { + if err := cs.Backend.BuildImage(runnerOpts); err != nil { + return nil, errors.Wrap(err, "Failed building image for "+runnerOpts.ImageName+" "+runnerOpts.DockerFileName) + } + } + if err := cs.Backend.ExportImage(runnerOpts); err != nil { return nil, errors.Wrap(err, "Failed exporting image") } - if cs.Options.Push { + if cs.Options.Push && buildPackageImage { err = cs.Backend.Push(runnerOpts) if err != nil { return nil, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)