mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 09:17:49 +08:00
Merge pull request #104 from tonistiigi/entitlements
build: add allowed entitlements
This commit is contained in:
commit
096d1befc9
@ -24,6 +24,7 @@ import (
|
|||||||
"github.com/moby/buildkit/client"
|
"github.com/moby/buildkit/client"
|
||||||
"github.com/moby/buildkit/session"
|
"github.com/moby/buildkit/session"
|
||||||
"github.com/moby/buildkit/session/upload/uploadprovider"
|
"github.com/moby/buildkit/session/upload/uploadprovider"
|
||||||
|
"github.com/moby/buildkit/util/entitlements"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
specs "github.com/opencontainers/image-spec/specs-go/v1"
|
specs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -55,6 +56,7 @@ type Options struct {
|
|||||||
CacheFrom []client.CacheOptionsEntry
|
CacheFrom []client.CacheOptionsEntry
|
||||||
CacheTo []client.CacheOptionsEntry
|
CacheTo []client.CacheOptionsEntry
|
||||||
|
|
||||||
|
Allow []entitlements.Entitlement
|
||||||
// DockerTarget
|
// DockerTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,6 +331,7 @@ func toSolveOpt(d driver.Driver, multiDriver bool, opt Options, dl dockerLoadCal
|
|||||||
LocalDirs: map[string]string{},
|
LocalDirs: map[string]string{},
|
||||||
CacheExports: opt.CacheTo,
|
CacheExports: opt.CacheTo,
|
||||||
CacheImports: opt.CacheFrom,
|
CacheImports: opt.CacheFrom,
|
||||||
|
AllowedEntitlements: opt.Allow,
|
||||||
}
|
}
|
||||||
|
|
||||||
if multiDriver {
|
if multiDriver {
|
||||||
@ -454,6 +457,7 @@ func toSolveOpt(d driver.Driver, multiDriver bool, opt Options, dl dockerLoadCal
|
|||||||
switch opt.NetworkMode {
|
switch opt.NetworkMode {
|
||||||
case "host", "none":
|
case "host", "none":
|
||||||
so.FrontendAttrs["force-network-mode"] = opt.NetworkMode
|
so.FrontendAttrs["force-network-mode"] = opt.NetworkMode
|
||||||
|
so.AllowedEntitlements = append(so.AllowedEntitlements, entitlements.EntitlementNetworkHost)
|
||||||
case "", "default":
|
case "", "default":
|
||||||
default:
|
default:
|
||||||
return nil, nil, errors.Errorf("network mode %q not supported by buildkit", opt.NetworkMode)
|
return nil, nil, errors.Errorf("network mode %q not supported by buildkit", opt.NetworkMode)
|
||||||
|
21
build/entitlements.go
Normal file
21
build/entitlements.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package build
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/moby/buildkit/util/entitlements"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ParseEntitlements(in []string) ([]entitlements.Entitlement, error) {
|
||||||
|
out := make([]entitlements.Entitlement, 0, len(in))
|
||||||
|
for _, v := range in {
|
||||||
|
switch v {
|
||||||
|
case "security.insecure":
|
||||||
|
out = append(out, entitlements.EntitlementSecurityInsecure)
|
||||||
|
case "network.host":
|
||||||
|
out = append(out, entitlements.EntitlementNetworkHost)
|
||||||
|
default:
|
||||||
|
return nil, errors.Errorf("invalid entitlement: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
@ -44,6 +44,8 @@ type buildOptions struct {
|
|||||||
squash bool
|
squash bool
|
||||||
quiet bool
|
quiet bool
|
||||||
|
|
||||||
|
allow []string
|
||||||
|
|
||||||
// hidden
|
// hidden
|
||||||
// untrusted bool
|
// untrusted bool
|
||||||
// ulimits *opts.UlimitOpt
|
// ulimits *opts.UlimitOpt
|
||||||
@ -167,6 +169,12 @@ func runBuild(dockerCli command.Cli, in buildOptions) error {
|
|||||||
}
|
}
|
||||||
opts.CacheTo = cacheExports
|
opts.CacheTo = cacheExports
|
||||||
|
|
||||||
|
allow, err := build.ParseEntitlements(in.allow)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
opts.Allow = allow
|
||||||
|
|
||||||
return buildTargets(ctx, dockerCli, map[string]build.Options{"default": opts}, in.progress)
|
return buildTargets(ctx, dockerCli, map[string]build.Options{"default": opts}, in.progress)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,6 +222,8 @@ func buildCmd(dockerCli command.Cli) *cobra.Command {
|
|||||||
|
|
||||||
flags.StringVar(&options.target, "target", "", "Set the target build stage to build.")
|
flags.StringVar(&options.target, "target", "", "Set the target build stage to build.")
|
||||||
|
|
||||||
|
flags.StringSliceVar(&options.allow, "allow", []string{}, "Allow extra privileged entitlement, e.g. network.host, security.insecure")
|
||||||
|
|
||||||
// not implemented
|
// not implemented
|
||||||
flags.BoolVarP(&options.quiet, "quiet", "q", false, "Suppress the build output and print image ID on success")
|
flags.BoolVarP(&options.quiet, "quiet", "q", false, "Suppress the build output and print image ID on success")
|
||||||
flags.StringVar(&options.networkMode, "network", "default", "Set the networking mode for the RUN instructions during build")
|
flags.StringVar(&options.networkMode, "network", "default", "Set the networking mode for the RUN instructions during build")
|
||||||
|
12
vendor/modules.txt
vendored
12
vendor/modules.txt
vendored
@ -36,6 +36,8 @@ github.com/containerd/containerd/remotes
|
|||||||
github.com/containerd/containerd/remotes/docker
|
github.com/containerd/containerd/remotes/docker
|
||||||
github.com/containerd/containerd/log
|
github.com/containerd/containerd/log
|
||||||
github.com/containerd/containerd/content/local
|
github.com/containerd/containerd/content/local
|
||||||
|
github.com/containerd/containerd/containers
|
||||||
|
github.com/containerd/containerd/oci
|
||||||
github.com/containerd/containerd/labels
|
github.com/containerd/containerd/labels
|
||||||
github.com/containerd/containerd/reference
|
github.com/containerd/containerd/reference
|
||||||
github.com/containerd/containerd/version
|
github.com/containerd/containerd/version
|
||||||
@ -44,12 +46,10 @@ github.com/containerd/containerd/sys
|
|||||||
github.com/containerd/containerd/api/services/content/v1
|
github.com/containerd/containerd/api/services/content/v1
|
||||||
github.com/containerd/containerd/content/proxy
|
github.com/containerd/containerd/content/proxy
|
||||||
github.com/containerd/containerd/services/content/contentserver
|
github.com/containerd/containerd/services/content/contentserver
|
||||||
github.com/containerd/containerd/containers
|
|
||||||
github.com/containerd/containerd/oci
|
|
||||||
github.com/containerd/containerd
|
|
||||||
github.com/containerd/containerd/namespaces
|
|
||||||
github.com/containerd/containerd/mount
|
github.com/containerd/containerd/mount
|
||||||
|
github.com/containerd/containerd/namespaces
|
||||||
github.com/containerd/containerd/snapshots
|
github.com/containerd/containerd/snapshots
|
||||||
|
github.com/containerd/containerd
|
||||||
github.com/containerd/containerd/api/services/containers/v1
|
github.com/containerd/containerd/api/services/containers/v1
|
||||||
github.com/containerd/containerd/api/services/diff/v1
|
github.com/containerd/containerd/api/services/diff/v1
|
||||||
github.com/containerd/containerd/api/services/events/v1
|
github.com/containerd/containerd/api/services/events/v1
|
||||||
@ -83,12 +83,12 @@ github.com/containerd/containerd/events/exchange
|
|||||||
github.com/containerd/containerd/identifiers
|
github.com/containerd/containerd/identifiers
|
||||||
# github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc
|
# github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc
|
||||||
github.com/containerd/continuity
|
github.com/containerd/continuity
|
||||||
|
github.com/containerd/continuity/fs
|
||||||
github.com/containerd/continuity/pathdriver
|
github.com/containerd/continuity/pathdriver
|
||||||
github.com/containerd/continuity/devices
|
github.com/containerd/continuity/devices
|
||||||
github.com/containerd/continuity/driver
|
github.com/containerd/continuity/driver
|
||||||
github.com/containerd/continuity/proto
|
github.com/containerd/continuity/proto
|
||||||
github.com/containerd/continuity/sysx
|
github.com/containerd/continuity/sysx
|
||||||
github.com/containerd/continuity/fs
|
|
||||||
github.com/containerd/continuity/syscallx
|
github.com/containerd/continuity/syscallx
|
||||||
# github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448
|
# github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448
|
||||||
github.com/containerd/fifo
|
github.com/containerd/fifo
|
||||||
@ -266,6 +266,7 @@ github.com/moby/buildkit/session
|
|||||||
github.com/moby/buildkit/session/secrets/secretsprovider
|
github.com/moby/buildkit/session/secrets/secretsprovider
|
||||||
github.com/moby/buildkit/session/sshforward/sshprovider
|
github.com/moby/buildkit/session/sshforward/sshprovider
|
||||||
github.com/moby/buildkit/session/upload/uploadprovider
|
github.com/moby/buildkit/session/upload/uploadprovider
|
||||||
|
github.com/moby/buildkit/util/entitlements
|
||||||
github.com/moby/buildkit/util/appcontext
|
github.com/moby/buildkit/util/appcontext
|
||||||
github.com/moby/buildkit/identity
|
github.com/moby/buildkit/identity
|
||||||
github.com/moby/buildkit/util/progress/progressui
|
github.com/moby/buildkit/util/progress/progressui
|
||||||
@ -285,7 +286,6 @@ github.com/moby/buildkit/session/grpchijack
|
|||||||
github.com/moby/buildkit/solver/pb
|
github.com/moby/buildkit/solver/pb
|
||||||
github.com/moby/buildkit/util/apicaps
|
github.com/moby/buildkit/util/apicaps
|
||||||
github.com/moby/buildkit/util/appdefaults
|
github.com/moby/buildkit/util/appdefaults
|
||||||
github.com/moby/buildkit/util/entitlements
|
|
||||||
github.com/moby/buildkit/session/secrets
|
github.com/moby/buildkit/session/secrets
|
||||||
github.com/moby/buildkit/session/sshforward
|
github.com/moby/buildkit/session/sshforward
|
||||||
github.com/moby/buildkit/session/upload
|
github.com/moby/buildkit/session/upload
|
||||||
|
Loading…
x
Reference in New Issue
Block a user