Ver código fonte

Merge pull request #105 from tiborvass/18.09-bk-fix-filters

[18.09] builder: fix bugs when pruning buildkit cache with filters
Andrew Hsu 6 anos atrás
pai
commit
334099505f
1 arquivos alterados com 15 adições e 9 exclusões
  1. 15 9
      builder/builder-next/builder.go

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

@@ -532,20 +532,26 @@ func toBuildkitPruneInfo(opts types.BuildCachePruneOptions) (client.PruneInfo, e
 
 
 	bkFilter := make([]string, 0, opts.Filters.Len())
 	bkFilter := make([]string, 0, opts.Filters.Len())
 	for cacheField := range cacheFields {
 	for cacheField := range cacheFields {
-		values := opts.Filters.Get(cacheField)
-		switch len(values) {
-		case 0:
-			bkFilter = append(bkFilter, cacheField)
-		case 1:
-			bkFilter = append(bkFilter, cacheField+"=="+values[0])
-		default:
-			return client.PruneInfo{}, errMultipleFilterValues
+		if opts.Filters.Include(cacheField) {
+			values := opts.Filters.Get(cacheField)
+			switch len(values) {
+			case 0:
+				bkFilter = append(bkFilter, cacheField)
+			case 1:
+				if cacheField == "id" {
+					bkFilter = append(bkFilter, cacheField+"~="+values[0])
+				} else {
+					bkFilter = append(bkFilter, cacheField+"=="+values[0])
+				}
+			default:
+				return client.PruneInfo{}, errMultipleFilterValues
+			}
 		}
 		}
 	}
 	}
 	return client.PruneInfo{
 	return client.PruneInfo{
 		All:          opts.All,
 		All:          opts.All,
 		KeepDuration: unusedFor,
 		KeepDuration: unusedFor,
 		KeepBytes:    opts.KeepStorage,
 		KeepBytes:    opts.KeepStorage,
-		Filter:       bkFilter,
+		Filter:       []string{strings.Join(bkFilter, ",")},
 	}, nil
 	}, nil
 }
 }