mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-19 01:47:43 +08:00
bake: add no-cache-filter
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
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 {
|
||||||
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user