mirror of
https://github.com/mudler/luet.git
synced 2025-08-31 23:02:16 +00:00
Try to build only when strictly necessary
This commit is contained in:
@@ -345,6 +345,18 @@ func (cs *LuetCompiler) buildPackageImage(image, buildertaggedImage, packageImag
|
|||||||
return builderOpts, runnerOpts, errors.Wrap(err, "Could not generate image definition")
|
return builderOpts, runnerOpts, errors.Wrap(err, "Could not generate image definition")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(p.GetPreBuildSteps()) == 0 {
|
||||||
|
buildertaggedImage = image
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.BuildSteps()) == 0 {
|
||||||
|
packageImage = buildertaggedImage
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.BuildSteps()) == 0 && len(p.GetPreBuildSteps()) == 0 {
|
||||||
|
packageImage = image
|
||||||
|
}
|
||||||
|
|
||||||
// Then we write the step image, which uses the builder one
|
// Then we write the step image, which uses the builder one
|
||||||
if err := p.WriteStepImageDefinition(buildertaggedImage, filepath.Join(buildDir, p.GetPackage().GetFingerPrint()+".dockerfile")); err != nil {
|
if err := p.WriteStepImageDefinition(buildertaggedImage, filepath.Join(buildDir, p.GetPackage().GetFingerPrint()+".dockerfile")); err != nil {
|
||||||
return builderOpts, runnerOpts, errors.Wrap(err, "Could not generate image definition")
|
return builderOpts, runnerOpts, errors.Wrap(err, "Could not generate image definition")
|
||||||
@@ -392,14 +404,18 @@ func (cs *LuetCompiler) buildPackageImage(image, buildertaggedImage, packageImag
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
if len(p.GetPreBuildSteps()) != 0 {
|
||||||
Info(pkgTag, ":whale: Generating 'builder' image from", image, "as", buildertaggedImage, "with prelude steps")
|
Info(pkgTag, ":whale: Generating 'builder' image from", image, "as", buildertaggedImage, "with prelude steps")
|
||||||
if err := buildAndPush(builderOpts); err != nil {
|
if err := buildAndPush(builderOpts); err != nil {
|
||||||
return builderOpts, runnerOpts, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)
|
return builderOpts, runnerOpts, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Info(pkgTag, ":whale: Generating 'package' image from", buildertaggedImage, "as", packageImage, "with build steps")
|
|
||||||
if err := buildAndPush(runnerOpts); err != nil {
|
if len(p.BuildSteps()) != 0 {
|
||||||
return builderOpts, runnerOpts, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)
|
Info(pkgTag, ":whale: Generating 'package' image from", buildertaggedImage, "as", packageImage, "with build steps")
|
||||||
|
if err := buildAndPush(runnerOpts); err != nil {
|
||||||
|
return builderOpts, runnerOpts, errors.Wrap(err, "Could not push image: "+image+" "+builderOpts.DockerFileName)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return builderOpts, runnerOpts, nil
|
return builderOpts, runnerOpts, nil
|
||||||
@@ -420,6 +436,20 @@ func (cs *LuetCompiler) genArtifact(p CompilationSpec, builderOpts, runnerOpts C
|
|||||||
unpack = true
|
unpack = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(p.BuildSteps()) == 0 && len(p.GetPreBuildSteps()) == 0 && !unpack {
|
||||||
|
fakePackage := p.Rel(p.GetPackage().GetFingerPrint() + ".package.tar")
|
||||||
|
// We can't generate delta in this case. It implies the package is a virtual, and nothing as to be done really
|
||||||
|
file, err := os.Create(fakePackage)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "Failed creating virtual package")
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
|
||||||
|
artifact := NewPackageArtifact(fakePackage)
|
||||||
|
artifact.SetCompressionType(cs.CompressionType)
|
||||||
|
return artifact, nil
|
||||||
|
}
|
||||||
|
|
||||||
// prepare folder content of the image with the package compiled inside
|
// prepare folder content of the image with the package compiled inside
|
||||||
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")
|
||||||
|
Reference in New Issue
Block a user