mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: github.com/moby/buildkit v0.12.1-0.20230717122532-faa0cc7da353
full diff: - https://github.com/moby/buildkit/compare/20230620112432...v0.12.0 - https://github.com/moby/buildkit/compare/v0.12.0...faa0cc7da3536923d85b74b2bb2d13c12a6ecc99 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
26
vendor/github.com/moby/buildkit/frontend/dockerui/namedcontext.go
generated
vendored
26
vendor/github.com/moby/buildkit/frontend/dockerui/namedcontext.go
generated
vendored
@ -13,25 +13,36 @@ import (
|
||||
"github.com/moby/buildkit/exporter/containerimage/image"
|
||||
"github.com/moby/buildkit/frontend/dockerfile/dockerignore"
|
||||
"github.com/moby/buildkit/frontend/gateway/client"
|
||||
"github.com/moby/buildkit/util/imageutil"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
const (
|
||||
contextPrefix = "context:"
|
||||
inputMetadataPrefix = "input-metadata:"
|
||||
maxContextRecursion = 10
|
||||
)
|
||||
|
||||
func (bc *Client) namedContext(ctx context.Context, name string, nameWithPlatform string, opt ContextOpt) (*llb.State, *image.Image, error) {
|
||||
return bc.namedContextRecursive(ctx, name, nameWithPlatform, opt, 0)
|
||||
}
|
||||
|
||||
func (bc *Client) namedContextRecursive(ctx context.Context, name string, nameWithPlatform string, opt ContextOpt, count int) (*llb.State, *image.Image, error) {
|
||||
opts := bc.bopts.Opts
|
||||
v, ok := opts[contextPrefix+nameWithPlatform]
|
||||
if !ok {
|
||||
return nil, nil, nil
|
||||
}
|
||||
|
||||
if count > maxContextRecursion {
|
||||
return nil, nil, errors.New("context recursion limit exceeded; this may indicate a cycle in the provided source policies: " + v)
|
||||
}
|
||||
|
||||
vv := strings.SplitN(v, ":", 2)
|
||||
if len(vv) != 2 {
|
||||
return nil, nil, errors.Errorf("invalid context specifier %s for %s", v, nameWithPlatform)
|
||||
}
|
||||
|
||||
// allow git@ without protocol for SSH URLs for backwards compatibility
|
||||
if strings.HasPrefix(vv[0], "git@") {
|
||||
vv[0] = "git"
|
||||
@ -58,13 +69,17 @@ func (bc *Client) namedContext(ctx context.Context, name string, nameWithPlatfor
|
||||
|
||||
named = reference.TagNameOnly(named)
|
||||
|
||||
_, data, err := bc.client.ResolveImageConfig(ctx, named.String(), llb.ResolveImageConfigOpt{
|
||||
ref, dgst, data, err := bc.client.ResolveImageConfig(ctx, named.String(), llb.ResolveImageConfigOpt{
|
||||
Platform: opt.Platform,
|
||||
ResolveMode: opt.ResolveMode,
|
||||
LogName: fmt.Sprintf("[context %s] load metadata for %s", nameWithPlatform, ref),
|
||||
ResolverType: llb.ResolverTypeRegistry,
|
||||
})
|
||||
if err != nil {
|
||||
e := &imageutil.ResolveToNonImageError{}
|
||||
if errors.As(err, &e) {
|
||||
return bc.namedContextRecursive(ctx, e.Updated, name, opt, count+1)
|
||||
}
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@ -79,6 +94,9 @@ func (bc *Client) namedContext(ctx context.Context, name string, nameWithPlatfor
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if opt.CaptureDigest != nil {
|
||||
*opt.CaptureDigest = dgst
|
||||
}
|
||||
return &st, &img, nil
|
||||
case "git":
|
||||
st, ok := DetectGitContext(v, true)
|
||||
@ -119,7 +137,8 @@ func (bc *Client) namedContext(ctx context.Context, name string, nameWithPlatfor
|
||||
return nil, nil, errors.Wrapf(err, "could not wrap %q with digest", name)
|
||||
}
|
||||
|
||||
_, data, err := bc.client.ResolveImageConfig(ctx, dummyRef.String(), llb.ResolveImageConfigOpt{
|
||||
// TODO: How should source policy be handled here with a dummy ref?
|
||||
_, dgst, data, err := bc.client.ResolveImageConfig(ctx, dummyRef.String(), llb.ResolveImageConfigOpt{
|
||||
Platform: opt.Platform,
|
||||
ResolveMode: opt.ResolveMode,
|
||||
LogName: fmt.Sprintf("[context %s] load metadata for %s", nameWithPlatform, dummyRef.String()),
|
||||
@ -153,6 +172,9 @@ func (bc *Client) namedContext(ctx context.Context, name string, nameWithPlatfor
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if opt.CaptureDigest != nil {
|
||||
*opt.CaptureDigest = dgst
|
||||
}
|
||||
return &st, &img, nil
|
||||
case "local":
|
||||
st := llb.Local(vv[1],
|
||||
|
Reference in New Issue
Block a user