mirror of
https://github.com/mudler/luet.git
synced 2025-09-01 07:09:13 +00:00
Check if image exists before skipping compilation
This commit is contained in:
@@ -90,6 +90,19 @@ func (*SimpleDocker) DownloadImage(opts compiler.CompilerBackendOptions) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*SimpleDocker) ImageExists(imagename string) bool {
|
||||||
|
buildarg := []string{"inspect", "--type=image", imagename}
|
||||||
|
Debug(":whale: Checking existance of docker image: " + imagename)
|
||||||
|
cmd := exec.Command("docker", buildarg...)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
Warning("Image not present")
|
||||||
|
Debug(out)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func (*SimpleDocker) RemoveImage(opts compiler.CompilerBackendOptions) error {
|
func (*SimpleDocker) RemoveImage(opts compiler.CompilerBackendOptions) error {
|
||||||
name := opts.ImageName
|
name := opts.ImageName
|
||||||
buildarg := []string{"rmi", name}
|
buildarg := []string{"rmi", name}
|
||||||
|
@@ -97,6 +97,13 @@ func (*SimpleImg) CopyImage(src, dst string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*SimpleImg) ImageExists(imagename string) bool {
|
||||||
|
// NOOP: not implemented
|
||||||
|
// TODO: Since img doesn't have an inspect command,
|
||||||
|
// we need to parse the ls output manually
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (s *SimpleImg) ImageDefinitionToTar(opts compiler.CompilerBackendOptions) error {
|
func (s *SimpleImg) ImageDefinitionToTar(opts compiler.CompilerBackendOptions) error {
|
||||||
if err := s.BuildImage(opts); err != nil {
|
if err := s.BuildImage(opts); err != nil {
|
||||||
return errors.Wrap(err, "Failed building image")
|
return errors.Wrap(err, "Failed building image")
|
||||||
|
@@ -229,8 +229,16 @@ func (cs *LuetCompiler) stripIncludesFromRootfs(includes []string, rootfs string
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage string, concurrency int, keepPermissions, keepImg bool, p CompilationSpec) (Artifact, error) {
|
func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage string, concurrency int, keepPermissions, keepImg bool, p CompilationSpec) (Artifact, error) {
|
||||||
|
fp := p.GetPackage().HashFingerprint()
|
||||||
|
if buildertaggedImage == "" {
|
||||||
|
buildertaggedImage = cs.ImageRepository + "-" + fp + "-builder"
|
||||||
|
}
|
||||||
|
if packageImage == "" {
|
||||||
|
packageImage = cs.ImageRepository + "-" + fp
|
||||||
|
}
|
||||||
if !cs.Clean {
|
if !cs.Clean {
|
||||||
if art, err := LoadArtifactFromYaml(p); err == nil {
|
exists := cs.Backend.ImageExists(buildertaggedImage) && cs.Backend.ImageExists(packageImage)
|
||||||
|
if art, err := LoadArtifactFromYaml(p); err == nil && exists {
|
||||||
Debug("Artifact reloaded. Skipping build")
|
Debug("Artifact reloaded. Skipping build")
|
||||||
return art, err
|
return art, err
|
||||||
}
|
}
|
||||||
@@ -265,14 +273,6 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fp := p.GetPackage().HashFingerprint()
|
|
||||||
if buildertaggedImage == "" {
|
|
||||||
buildertaggedImage = cs.ImageRepository + "-" + fp + "-builder"
|
|
||||||
}
|
|
||||||
if packageImage == "" {
|
|
||||||
packageImage = cs.ImageRepository + "-" + fp
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
||||||
|
@@ -82,6 +82,8 @@ type CompilerBackend interface {
|
|||||||
DownloadImage(opts CompilerBackendOptions) error
|
DownloadImage(opts CompilerBackendOptions) error
|
||||||
|
|
||||||
Push(opts CompilerBackendOptions) error
|
Push(opts CompilerBackendOptions) error
|
||||||
|
|
||||||
|
ImageExists(string) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type Artifact interface {
|
type Artifact interface {
|
||||||
|
Reference in New Issue
Block a user