mirror of
https://github.com/mudler/luet.git
synced 2025-09-03 00:06:36 +00:00
Use ondisk reference for deltas
This commit is contained in:
@@ -46,6 +46,7 @@ func ExtractDeltaAdditionsFiles(
|
|||||||
includeRegexp := compileRegexes(includes)
|
includeRegexp := compileRegexes(includes)
|
||||||
excludeRegexp := compileRegexes(excludes)
|
excludeRegexp := compileRegexes(excludes)
|
||||||
filesSrc := map[string]interface{}{}
|
filesSrc := map[string]interface{}{}
|
||||||
|
|
||||||
|
|
||||||
srcReader := mutate.Extract(srcimg)
|
srcReader := mutate.Extract(srcimg)
|
||||||
defer srcReader.Close()
|
defer srcReader.Close()
|
||||||
|
@@ -156,7 +156,7 @@ RUN echo bar > /test2`))
|
|||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
defer os.RemoveAll(result) // clean up
|
defer os.RemoveAll(result) // clean up
|
||||||
|
|
||||||
img, err := b.ImageReference(resultingImage)
|
img, err := b.ImageReference(resultingImage, false)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, _, err = image.ExtractTo(
|
_, _, err = image.ExtractTo(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -206,7 +206,7 @@ RUN echo bar > /test2`))
|
|||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
defer os.RemoveAll(result) // clean up
|
defer os.RemoveAll(result) // clean up
|
||||||
|
|
||||||
img, err := b.ImageReference(resultingImage)
|
img, err := b.ImageReference(resultingImage, false)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, _, err = image.ExtractTo(
|
_, _, err = image.ExtractTo(
|
||||||
ctx,
|
ctx,
|
||||||
|
@@ -35,6 +35,6 @@ type CompilerBackend interface {
|
|||||||
Push(opts backend.Options) error
|
Push(opts backend.Options) error
|
||||||
ImageAvailable(string) bool
|
ImageAvailable(string) bool
|
||||||
|
|
||||||
ImageReference(img1 string) (v1.Image, error)
|
ImageReference(img1 string, ondisk bool) (v1.Image, error)
|
||||||
ImageExists(string) bool
|
ImageExists(string) bool
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ package backend
|
|||||||
import (
|
import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/google/go-containerregistry/pkg/crane"
|
||||||
"github.com/google/go-containerregistry/pkg/name"
|
"github.com/google/go-containerregistry/pkg/name"
|
||||||
"github.com/google/go-containerregistry/pkg/v1/daemon"
|
"github.com/google/go-containerregistry/pkg/v1/daemon"
|
||||||
bus "github.com/mudler/luet/pkg/api/core/bus"
|
bus "github.com/mudler/luet/pkg/api/core/bus"
|
||||||
@@ -138,7 +139,24 @@ func (s *SimpleDocker) Push(opts Options) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SimpleDocker) ImageReference(a string) (v1.Image, error) {
|
func (s *SimpleDocker) ImageReference(a string, ondisk bool) (v1.Image, error) {
|
||||||
|
if ondisk {
|
||||||
|
f, err := s.ctx.Config.GetSystem().TempFile("snapshot")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
buildarg := []string{"save", a, "-o", f.Name()}
|
||||||
|
s.ctx.Spinner()
|
||||||
|
defer s.ctx.SpinnerStop()
|
||||||
|
|
||||||
|
out, err := exec.Command("docker", buildarg...).CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "Failed saving image: "+string(out))
|
||||||
|
}
|
||||||
|
|
||||||
|
return crane.Load(f.Name())
|
||||||
|
}
|
||||||
|
|
||||||
ref, err := name.ParseReference(a)
|
ref, err := name.ParseReference(a)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@@ -71,7 +71,7 @@ func (s *SimpleImg) RemoveImage(opts Options) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SimpleImg) ImageReference(a string) (v1.Image, error) {
|
func (s *SimpleImg) ImageReference(a string, ondisk bool) (v1.Image, error) {
|
||||||
|
|
||||||
f, err := s.ctx.Config.GetSystem().TempFile("snapshot")
|
f, err := s.ctx.Config.GetSystem().TempFile("snapshot")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -234,7 +234,7 @@ func (cs *LuetCompiler) unpackFs(concurrency int, keepPermissions bool, p *compi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
img, err := cs.Backend.ImageReference(runnerOpts.ImageName)
|
img, err := cs.Backend.ImageReference(runnerOpts.ImageName, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -313,14 +313,14 @@ func (cs *LuetCompiler) unpackDelta(concurrency int, keepPermissions bool, p *co
|
|||||||
|
|
||||||
cs.Options.Context.Info(pkgTag, ":hammer: Retrieving reference for", builderOpts.ImageName)
|
cs.Options.Context.Info(pkgTag, ":hammer: Retrieving reference for", builderOpts.ImageName)
|
||||||
|
|
||||||
ref, err := cs.Backend.ImageReference(builderOpts.ImageName)
|
ref, err := cs.Backend.ImageReference(builderOpts.ImageName, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
cs.Options.Context.Info(pkgTag, ":hammer: Retrieving reference for", runnerOpts.ImageName)
|
cs.Options.Context.Info(pkgTag, ":hammer: Retrieving reference for", runnerOpts.ImageName)
|
||||||
|
|
||||||
ref2, err := cs.Backend.ImageReference(runnerOpts.ImageName)
|
ref2, err := cs.Backend.ImageReference(runnerOpts.ImageName, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@@ -196,7 +196,7 @@ func (d *dockerRepositoryGenerator) Generate(r *LuetSystemRepository, imagePrefi
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "while downloading '%s'", imageRepository)
|
return errors.Wrapf(err, "while downloading '%s'", imageRepository)
|
||||||
}
|
}
|
||||||
img, err := r.GetBackend().ImageReference(imageRepository)
|
img, err := r.GetBackend().ImageReference(imageRepository, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "while downloading '%s'", imageRepository)
|
return errors.Wrapf(err, "while downloading '%s'", imageRepository)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user