Prechádzať zdrojové kódy

builder: fixes after rebase

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Tonis Tiigi 7 rokov pred
rodič
commit
ed651e796c

+ 1 - 1
api/server/router/system/system_routes.go

@@ -97,7 +97,7 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
 		var err error
 		var err error
 		buildCache, err = s.builder.DiskUsage(ctx)
 		buildCache, err = s.builder.DiskUsage(ctx)
 		if err != nil {
 		if err != nil {
-			return pkgerrors.Wrap(err, "error getting fscache build cache usage")
+			return pkgerrors.Wrap(err, "error getting build cache usage")
 		}
 		}
 		return nil
 		return nil
 	})
 	})

+ 7 - 8
builder/builder-next/adapters/containerimage/pull.go

@@ -291,15 +291,14 @@ func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) {
 	}
 	}
 
 
 	if p.config != nil {
 	if p.config != nil {
-		img, err := p.is.ImageStore.Get(image.ID(digest.Digest(p.config)))
-		if err != nil {
-			return nil, err
-		}
-		ref, err := p.is.CacheAccessor.GetFromSnapshotter(ctx, string(img.RootFS.ChainID()), cache.WithDescription(fmt.Sprintf("from local %s", p.ref)))
-		if err != nil {
-			return nil, err
+		img, err := p.is.ImageStore.Get(image.ID(digest.FromBytes(p.config)))
+		if err == nil {
+			ref, err := p.is.CacheAccessor.GetFromSnapshotter(ctx, string(img.RootFS.ChainID()), cache.WithDescription(fmt.Sprintf("from local %s", p.ref)))
+			if err != nil {
+				return nil, err
+			}
+			return ref, nil
 		}
 		}
-		return ref, nil
 	}
 	}
 
 
 	ongoing := newJobs(p.ref)
 	ongoing := newJobs(p.ref)

+ 3 - 0
builder/builder-next/adapters/snapshot/snapshot.go

@@ -307,6 +307,9 @@ func (s *snapshotter) Remove(ctx context.Context, key string) error {
 	}
 	}
 
 
 	if l != nil {
 	if l != nil {
+		s.mu.Lock()
+		delete(s.refs, key)
+		s.mu.Unlock()
 		_, err := s.opt.LayerStore.Release(l)
 		_, err := s.opt.LayerStore.Release(l)
 		return err
 		return err
 	}
 	}

+ 9 - 0
builder/builder-next/builder.go

@@ -109,6 +109,15 @@ func (b *Builder) Prune(ctx context.Context) (int64, error) {
 }
 }
 
 
 func (b *Builder) Build(ctx context.Context, opt backend.BuildConfig) (*builder.Result, error) {
 func (b *Builder) Build(ctx context.Context, opt backend.BuildConfig) (*builder.Result, error) {
+	if buildID := opt.Options.BuildID; buildID != "" {
+		b.mu.Lock()
+		ctx, b.jobs[buildID] = context.WithCancel(ctx)
+		b.mu.Unlock()
+		defer func() {
+			delete(b.jobs, buildID)
+		}()
+	}
+
 	var out builder.Result
 	var out builder.Result
 
 
 	id := identity.NewID()
 	id := identity.NewID()

+ 16 - 13
builder/builder-next/exporter/export.go

@@ -73,23 +73,26 @@ func (e *imageExporterInstance) Export(ctx context.Context, ref cache.ImmutableR
 	}
 	}
 	config := e.config
 	config := e.config
 
 
-	layersDone := oneOffProgress(ctx, "exporting layers")
+	var diffs []digest.Digest
+	if ref != nil {
+		layersDone := oneOffProgress(ctx, "exporting layers")
 
 
-	if err := ref.Finalize(ctx); err != nil {
-		return nil, err
-	}
+		if err := ref.Finalize(ctx); err != nil {
+			return nil, err
+		}
 
 
-	diffIDs, err := e.opt.Differ.EnsureLayer(ctx, ref.ID())
-	if err != nil {
-		return nil, err
-	}
+		diffIDs, err := e.opt.Differ.EnsureLayer(ctx, ref.ID())
+		if err != nil {
+			return nil, err
+		}
 
 
-	diffs := make([]digest.Digest, len(diffIDs))
-	for i := range diffIDs {
-		diffs[i] = digest.Digest(diffIDs[i])
-	}
+		diffs = make([]digest.Digest, len(diffIDs))
+		for i := range diffIDs {
+			diffs[i] = digest.Digest(diffIDs[i])
+		}
 
 
-	layersDone(nil)
+		layersDone(nil)
+	}
 
 
 	if len(config) == 0 {
 	if len(config) == 0 {
 		var err error
 		var err error