mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-03 17:43:42 +08:00 
			
		
		
		
	bake: add no-cache-filter
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		@@ -524,7 +524,7 @@ type Target struct {
 | 
				
			|||||||
	Pull             *bool             `json:"pull,omitempty" hcl:"pull,optional"`
 | 
						Pull             *bool             `json:"pull,omitempty" hcl:"pull,optional"`
 | 
				
			||||||
	NoCache          *bool             `json:"no-cache,omitempty" hcl:"no-cache,optional"`
 | 
						NoCache          *bool             `json:"no-cache,omitempty" hcl:"no-cache,optional"`
 | 
				
			||||||
	NetworkMode      *string           `json:"-" hcl:"-"`
 | 
						NetworkMode      *string           `json:"-" hcl:"-"`
 | 
				
			||||||
 | 
						NoCacheFilter    []string          `json:"no-cache-filter,omitempty" hcl:"no-cache-filter,optional"`
 | 
				
			||||||
	// IMPORTANT: if you add more fields here, do not forget to update newOverrides and README.
 | 
						// IMPORTANT: if you add more fields here, do not forget to update newOverrides and README.
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -536,6 +536,7 @@ func (t *Target) normalize() {
 | 
				
			|||||||
	t.CacheFrom = removeDupes(t.CacheFrom)
 | 
						t.CacheFrom = removeDupes(t.CacheFrom)
 | 
				
			||||||
	t.CacheTo = removeDupes(t.CacheTo)
 | 
						t.CacheTo = removeDupes(t.CacheTo)
 | 
				
			||||||
	t.Outputs = removeDupes(t.Outputs)
 | 
						t.Outputs = removeDupes(t.Outputs)
 | 
				
			||||||
 | 
						t.NoCacheFilter = removeDupes(t.NoCacheFilter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for k, v := range t.Contexts {
 | 
						for k, v := range t.Contexts {
 | 
				
			||||||
		if v == "" {
 | 
							if v == "" {
 | 
				
			||||||
@@ -608,6 +609,9 @@ func (t *Target) Merge(t2 *Target) {
 | 
				
			|||||||
	if t2.NetworkMode != nil {
 | 
						if t2.NetworkMode != nil {
 | 
				
			||||||
		t.NetworkMode = t2.NetworkMode
 | 
							t.NetworkMode = t2.NetworkMode
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if t2.NoCacheFilter != nil { // merge
 | 
				
			||||||
 | 
							t.NoCacheFilter = append(t.NoCacheFilter, t2.NoCacheFilter...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	t.Inherits = append(t.Inherits, t2.Inherits...)
 | 
						t.Inherits = append(t.Inherits, t2.Inherits...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -666,6 +670,8 @@ func (t *Target) AddOverrides(overrides map[string]Override) error {
 | 
				
			|||||||
				return errors.Errorf("invalid value %s for boolean key no-cache", value)
 | 
									return errors.Errorf("invalid value %s for boolean key no-cache", value)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			t.NoCache = &noCache
 | 
								t.NoCache = &noCache
 | 
				
			||||||
 | 
							case "no-cache-filter":
 | 
				
			||||||
 | 
								t.NoCacheFilter = o.ArrValue
 | 
				
			||||||
		case "pull":
 | 
							case "pull":
 | 
				
			||||||
			pull, err := strconv.ParseBool(value)
 | 
								pull, err := strconv.ParseBool(value)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
@@ -781,6 +787,7 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
 | 
				
			|||||||
		BuildArgs:     t.Args,
 | 
							BuildArgs:     t.Args,
 | 
				
			||||||
		Labels:        t.Labels,
 | 
							Labels:        t.Labels,
 | 
				
			||||||
		NoCache:       noCache,
 | 
							NoCache:       noCache,
 | 
				
			||||||
 | 
							NoCacheFilter: t.NoCacheFilter,
 | 
				
			||||||
		Pull:          pull,
 | 
							Pull:          pull,
 | 
				
			||||||
		NetworkMode:   networkMode,
 | 
							NetworkMode:   networkMode,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -194,6 +194,14 @@ func (t *Target) composeExtTarget(exts map[string]interface{}) error {
 | 
				
			|||||||
				if res, ok := val.(bool); ok {
 | 
									if res, ok := val.(bool); ok {
 | 
				
			||||||
					t.NoCache = &res
 | 
										t.NoCache = &res
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								case "no-cache-filter":
 | 
				
			||||||
 | 
									if res, k := val.(string); k {
 | 
				
			||||||
 | 
										t.NoCacheFilter = append(t.NoCacheFilter, res)
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										for _, res := range val.([]interface{}) {
 | 
				
			||||||
 | 
											t.NoCacheFilter = append(t.NoCacheFilter, res.(string))
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return fmt.Errorf("compose file invalid: unkwown %s field for x-bake", key)
 | 
									return fmt.Errorf("compose file invalid: unkwown %s field for x-bake", key)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -340,7 +340,7 @@ target "db" {
 | 
				
			|||||||
Complete list of valid target fields:
 | 
					Complete list of valid target fields:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`args`, `cache-from`, `cache-to`, `context`, `contexts`, `dockerfile`, `inherits`, `labels`,
 | 
					`args`, `cache-from`, `cache-to`, `context`, `contexts`, `dockerfile`, `inherits`, `labels`,
 | 
				
			||||||
`no-cache`, `output`, `platform`, `pull`, `secrets`, `ssh`, `tags`, `target`
 | 
					`no-cache`, `no-cache-filter`, `output`, `platform`, `pull`, `secrets`, `ssh`, `tags`, `target`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Global scope attributes
 | 
					### Global scope attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -982,7 +982,7 @@ $ docker buildx bake --print
 | 
				
			|||||||
Complete list of valid fields for `x-bake`:
 | 
					Complete list of valid fields for `x-bake`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`tags`, `cache-from`, `cache-to`, `secret`, `ssh`, `platforms`, `output`,
 | 
					`tags`, `cache-from`, `cache-to`, `secret`, `ssh`, `platforms`, `output`,
 | 
				
			||||||
`pull`, `no-cache`
 | 
					`pull`, `no-cache`, `no-cache-filter`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Built-in variables
 | 
					### Built-in variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user