Add build option to remove backend artifacts

Add keep-exported-images to build to instruct to remove backend artifacts (docker images)
This commit is contained in:
Ettore Di Giacinto 2020-02-21 22:00:35 +01:00
parent a04dadf100
commit 07610bc216
No known key found for this signature in database
GPG Key ID: 1ADA699B145A2D1C
3 changed files with 20 additions and 0 deletions

View File

@ -52,6 +52,8 @@ var buildCmd = &cobra.Command{
viper.BindPFlag("pull", cmd.Flags().Lookup("pull")) viper.BindPFlag("pull", cmd.Flags().Lookup("pull"))
viper.BindPFlag("keep-images", cmd.Flags().Lookup("keep-images")) viper.BindPFlag("keep-images", cmd.Flags().Lookup("keep-images"))
LuetCfg.Viper.BindPFlag("keep-exported-images", cmd.Flags().Lookup("keep-exported-images"))
LuetCfg.Viper.BindPFlag("solver.type", cmd.Flags().Lookup("solver-type")) LuetCfg.Viper.BindPFlag("solver.type", cmd.Flags().Lookup("solver-type"))
LuetCfg.Viper.BindPFlag("solver.discount", cmd.Flags().Lookup("solver-discount")) LuetCfg.Viper.BindPFlag("solver.discount", cmd.Flags().Lookup("solver-discount"))
LuetCfg.Viper.BindPFlag("solver.rate", cmd.Flags().Lookup("solver-rate")) LuetCfg.Viper.BindPFlag("solver.rate", cmd.Flags().Lookup("solver-rate"))
@ -75,6 +77,7 @@ var buildCmd = &cobra.Command{
keepImages := viper.GetBool("keep-images") keepImages := viper.GetBool("keep-images")
nodeps := viper.GetBool("nodeps") nodeps := viper.GetBool("nodeps")
onlydeps := viper.GetBool("onlydeps") onlydeps := viper.GetBool("onlydeps")
keepExportedImages := viper.GetBool("keep-exported-images")
compilerSpecs := compiler.NewLuetCompilationspecs() compilerSpecs := compiler.NewLuetCompilationspecs()
var compilerBackend compiler.CompilerBackend var compilerBackend compiler.CompilerBackend
@ -131,6 +134,8 @@ var buildCmd = &cobra.Command{
opts.Push = push opts.Push = push
opts.OnlyDeps = onlydeps opts.OnlyDeps = onlydeps
opts.NoDeps = nodeps opts.NoDeps = nodeps
opts.KeepImageExport = keepExportedImages
luetCompiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.GetDatabase(), opts) luetCompiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.GetDatabase(), opts)
luetCompiler.SetConcurrency(concurrency) luetCompiler.SetConcurrency(concurrency)
luetCompiler.SetCompressionType(compiler.CompressionImplementation(compressionType)) luetCompiler.SetCompressionType(compiler.CompressionImplementation(compressionType))
@ -205,6 +210,8 @@ func init() {
buildCmd.Flags().Bool("keep-images", true, "Keep built docker images in the host") buildCmd.Flags().Bool("keep-images", true, "Keep built docker images in the host")
buildCmd.Flags().Bool("nodeps", false, "Build only the target packages, skipping deps (it works only if you already built the deps locally, or by using --pull) ") buildCmd.Flags().Bool("nodeps", false, "Build only the target packages, skipping deps (it works only if you already built the deps locally, or by using --pull) ")
buildCmd.Flags().Bool("onlydeps", false, "Build only package dependencies") buildCmd.Flags().Bool("onlydeps", false, "Build only package dependencies")
buildCmd.Flags().Bool("keep-exported-images", false, "Keep exported images used during building")
buildCmd.Flags().String("solver-type", "", "Solver strategy") buildCmd.Flags().String("solver-type", "", "Solver strategy")
buildCmd.Flags().Float32("solver-rate", 0.7, "Solver learning rate") buildCmd.Flags().Float32("solver-rate", 0.7, "Solver learning rate")
buildCmd.Flags().Float32("solver-discount", 1.0, "Solver discount rate") buildCmd.Flags().Float32("solver-discount", 1.0, "Solver discount rate")

View File

@ -301,6 +301,10 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
return nil, errors.Wrap(err, "Could not export image") return nil, errors.Wrap(err, "Could not export image")
} }
if !cs.Options.KeepImageExport {
defer os.Remove(builderOpts.Destination)
}
if cs.Options.Push && buildBuilderImage { if cs.Options.Push && buildBuilderImage {
if err = cs.Backend.Push(builderOpts); err != nil { if err = cs.Backend.Push(builderOpts); 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)
@ -339,6 +343,10 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
return nil, errors.Wrap(err, "Failed exporting image") return nil, errors.Wrap(err, "Failed exporting image")
} }
if !cs.Options.KeepImageExport {
defer os.Remove(runnerOpts.Destination)
}
if cs.Options.Push && buildPackageImage { if cs.Options.Push && buildPackageImage {
err = cs.Backend.Push(runnerOpts) err = cs.Backend.Push(runnerOpts)
if err != nil { if err != nil {
@ -452,6 +460,10 @@ func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPerm
return nil, errors.Wrap(err, "Could not export image") return nil, errors.Wrap(err, "Could not export image")
} }
if !cs.Options.KeepImageExport {
defer os.Remove(builderOpts.Destination)
}
rootfs, err := ioutil.TempDir(p.GetOutputPath(), "rootfs") rootfs, err := ioutil.TempDir(p.GetOutputPath(), "rootfs")
if err != nil { if err != nil {
return nil, errors.Wrap(err, "Could not create tempdir") return nil, errors.Wrap(err, "Could not create tempdir")

View File

@ -49,6 +49,7 @@ type CompilerOptions struct {
Concurrency int Concurrency int
CompressionType CompressionImplementation CompressionType CompressionImplementation
Clean bool Clean bool
KeepImageExport bool
OnlyDeps bool OnlyDeps bool
NoDeps bool NoDeps bool