bake: add no-cache-filter

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
pull/860/head
Tonis Tiigi 3 years ago
parent 3b47722032
commit 32f6358d78

@ -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 {
@ -776,13 +782,14 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
t.Context = &bi.ContextPath t.Context = &bi.ContextPath
bo := &build.Options{ bo := &build.Options{
Inputs: bi, Inputs: bi,
Tags: t.Tags, Tags: t.Tags,
BuildArgs: t.Args, BuildArgs: t.Args,
Labels: t.Labels, Labels: t.Labels,
NoCache: noCache, NoCache: noCache,
Pull: pull, NoCacheFilter: t.NoCacheFilter,
NetworkMode: networkMode, Pull: pull,
NetworkMode: networkMode,
} }
platforms, err := platformutil.Parse(t.Platforms) platforms, err := platformutil.Parse(t.Platforms)

@ -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

Loading…
Cancel
Save