Compare commits

...

4 Commits
0.6 ... 0.6.1

Author SHA1 Message Date
Ettore Di Giacinto
4e675723e8 Prepare for 0.6.1 tag 2020-02-17 18:04:05 +01:00
Ettore Di Giacinto
dd00d491b9 Skip repository if no candidate is found
FindPackageCandidate is idempotent and returns the same definition if no new is found.
This prevents installs from multiple-repos
2020-02-17 17:21:31 +01:00
Ettore Di Giacinto
26b94888c3 Skip image building if we pulled them successfully 2020-02-15 22:53:00 +01:00
Ettore Di Giacinto
01e635bd78 Add dev version tag 2020-02-15 16:52:30 +01:00
3 changed files with 36 additions and 18 deletions

View File

@@ -35,7 +35,7 @@ var cfgFile string
var Verbose bool var Verbose bool
const ( const (
LuetCLIVersion = "0.6" LuetCLIVersion = "0.6.1"
LuetEnvPrefix = "LUET" LuetEnvPrefix = "LUET"
) )

View File

@@ -272,12 +272,6 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
packageImage = cs.ImageRepository + "-" + p.GetPackage().GetFingerPrint() 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) Info(pkgTag, "Generating :whale: definition for builder image from", image)
// First we create the builder 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"), Destination: p.Rel(p.GetPackage().GetFingerPrint() + "-builder.image.tar"),
} }
err = cs.Backend.BuildImage(builderOpts) buildBuilderImage := true
if err != nil { if cs.Options.PullFirst {
return nil, errors.Wrap(err, "Could not build image: "+image+" "+builderOpts.DockerFileName) if err := cs.Backend.DownloadImage(builderOpts); err == nil {
buildBuilderImage = false
}
} }
err = cs.Backend.ExportImage(builderOpts) if buildBuilderImage {
if err != nil { 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") return nil, errors.Wrap(err, "Could not export image")
} }
if cs.Options.Push { if cs.Options.Push && buildBuilderImage {
err = cs.Backend.Push(builderOpts) if err = cs.Backend.Push(builderOpts); err != nil {
if err != nil {
return nil, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName) 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") // return nil, errors.Wrap(err, "Could not export image to tar")
// } // }
// } else { // } else {
if err := cs.Backend.BuildImage(runnerOpts); err != nil { buildPackageImage := true
return nil, errors.Wrap(err, "Failed building image for "+runnerOpts.ImageName+" "+runnerOpts.DockerFileName) 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 { if err := cs.Backend.ExportImage(runnerOpts); err != nil {
return nil, errors.Wrap(err, "Failed exporting image") return nil, errors.Wrap(err, "Failed exporting image")
} }
if cs.Options.Push { if cs.Options.Push && buildPackageImage {
err = cs.Backend.Push(runnerOpts) err = cs.Backend.Push(runnerOpts)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName) return nil, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)

View File

@@ -530,14 +530,21 @@ func (re Repositories) ResolveSelectors(p []pkg.Package) []pkg.Package {
var matches []pkg.Package var matches []pkg.Package
PACKAGE: PACKAGE:
for _, pack := range p { for _, pack := range p {
REPOSITORY:
for _, r := range re { for _, r := range re {
if pack.IsSelector() { if pack.IsSelector() {
c, err := r.GetTree().GetDatabase().FindPackageCandidate(pack) c, err := r.GetTree().GetDatabase().FindPackageCandidate(pack)
// If FindPackageCandidate returns the same package, it means it couldn't find one.
// Skip this repository and keep looking.
if c.String() == pack.String() {
continue REPOSITORY
}
if err == nil { if err == nil {
matches = append(matches, c) matches = append(matches, c)
continue PACKAGE continue PACKAGE
} }
} else { } else {
// If it's not a selector, just append it
matches = append(matches, pack) matches = append(matches, pack)
} }
} }