Sebastiaan van Stijn
2024-06-04 11:33:43 +02:00
parent dbdd3601eb
commit 9358f84668
146 changed files with 2661 additions and 1102 deletions

View File

@ -1,7 +1,6 @@
package dockerui
import (
"encoding/csv"
"net"
"strconv"
"strings"
@ -13,6 +12,7 @@ import (
"github.com/moby/buildkit/solver/pb"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/tonistiigi/go-csvvalue"
)
func parsePlatforms(v string) ([]ocispecs.Platform, error) {
@ -45,8 +45,7 @@ func parseExtraHosts(v string) ([]llb.HostIP, error) {
return nil, nil
}
out := make([]llb.HostIP, 0)
csvReader := csv.NewReader(strings.NewReader(v))
fields, err := csvReader.Read()
fields, err := csvvalue.Fields(v, nil)
if err != nil {
return nil, err
}
@ -80,8 +79,7 @@ func parseUlimits(v string) ([]pb.Ulimit, error) {
return nil, nil
}
out := make([]pb.Ulimit, 0)
csvReader := csv.NewReader(strings.NewReader(v))
fields, err := csvReader.Read()
fields, err := csvvalue.Fields(v, nil)
if err != nil {
return nil, err
}

View File

@ -14,6 +14,7 @@ import (
controlapi "github.com/moby/buildkit/api/services/control"
"github.com/moby/buildkit/client/llb"
"github.com/moby/buildkit/frontend/attestations"
"github.com/moby/buildkit/frontend/dockerfile/linter"
"github.com/moby/buildkit/frontend/gateway/client"
"github.com/moby/buildkit/solver/pb"
"github.com/moby/buildkit/util/flightcontrol"
@ -65,7 +66,7 @@ type Config struct {
ShmSize int64
Target string
Ulimits []pb.Ulimit
LinterConfig *string
LinterConfig *linter.Config
CacheImports []client.CacheOptionsEntry
TargetPlatforms []ocispecs.Platform // nil means default
@ -78,8 +79,7 @@ type Client struct {
Config
client client.Client
ignoreCache []string
bctx *buildContext
g flightcontrol.Group[*buildContext]
g flightcontrol.CachedGroup[*buildContext]
bopts client.BuildOpts
dockerignore []byte
@ -281,21 +281,17 @@ func (bc *Client) init() error {
bc.Hostname = opts[keyHostname]
if v, ok := opts[keyDockerfileLintArg]; ok {
bc.LinterConfig = &v
bc.LinterConfig, err = linter.ParseLintOptions(v)
if err != nil {
return errors.Wrapf(err, "failed to parse %s", keyDockerfileLintArg)
}
}
return nil
}
func (bc *Client) buildContext(ctx context.Context) (*buildContext, error) {
return bc.g.Do(ctx, "initcontext", func(ctx context.Context) (*buildContext, error) {
if bc.bctx != nil {
return bc.bctx, nil
}
bctx, err := bc.initContext(ctx)
if err == nil {
bc.bctx = bctx
}
return bctx, err
return bc.initContext(ctx)
})
}