Merge pull request #2006 from Liberatys/feature/convert-home-relative-paths

Convert home relative paths for cache options
This commit is contained in:
Helder Correia 2022-04-12 11:21:11 +00:00 committed by GitHub
commit e00b3c2068
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,8 @@ import (
"cuelang.org/go/cue" "cuelang.org/go/cue"
"github.com/containerd/containerd/platforms" "github.com/containerd/containerd/platforms"
"github.com/docker/buildx/util/buildflags" "github.com/docker/buildx/util/buildflags"
"github.com/mitchellh/go-homedir"
buildkit "github.com/moby/buildkit/client"
specs "github.com/opencontainers/image-spec/specs-go/v1" specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"github.com/spf13/viper" "github.com/spf13/viper"
@ -84,6 +86,24 @@ func ValueDocOneLine(val *compiler.Value) string {
return strings.Join(docs, " ") return strings.Join(docs, " ")
} }
func convertRelativePaths(cacheOptionEntries []buildkit.CacheOptionsEntry) []buildkit.CacheOptionsEntry {
pathableAttributes := []string{"src", "dest"}
for _, option := range cacheOptionEntries {
for _, key := range pathableAttributes {
if _, ok := option.Attrs[key]; ok {
path, err := homedir.Expand(option.Attrs[key])
if err != nil {
panic(err)
}
option.Attrs[key] = path
}
}
}
return cacheOptionEntries
}
// NewClient creates a new client // NewClient creates a new client
func NewClient(ctx context.Context) *client.Client { func NewClient(ctx context.Context) *client.Client {
lg := log.Ctx(ctx) lg := log.Ctx(ctx)
@ -108,8 +128,8 @@ func NewClient(ctx context.Context) *client.Client {
} }
cl, err := client.New(ctx, "", client.Config{ cl, err := client.New(ctx, "", client.Config{
CacheExports: cacheExports, CacheExports: convertRelativePaths(cacheExports),
CacheImports: cacheImports, CacheImports: convertRelativePaths(cacheImports),
NoCache: viper.GetBool("no-cache"), NoCache: viper.GetBool("no-cache"),
TargetPlatform: p, TargetPlatform: p,
}) })