Implement `--quiet` support

Signed-off-by: Andy Caldwell <andrew.caldwell@metaswitch.com>
This commit is contained in:
Andy Caldwell 2021-08-19 04:05:15 +01:00
parent 2d3763990c
commit c19c018a4c
No known key found for this signature in database
GPG Key ID: D4204541AC1D228D
3 changed files with 22 additions and 11 deletions

View File

@ -22,10 +22,10 @@ test:
validate-vendor: validate-vendor:
./hack/validate-vendor ./hack/validate-vendor
validate-docs: validate-docs:
./hack/validate-docs ./hack/validate-docs
validate-all: lint test validate-vendor validate-docs validate-all: lint test validate-vendor validate-docs
vendor: vendor:

View File

@ -54,6 +54,7 @@ type Options struct {
BuildArgs map[string]string BuildArgs map[string]string
Pull bool Pull bool
ImageIDFile string ImageIDFile string
Quiet bool
ExtraHosts []string ExtraHosts []string
NetworkMode string NetworkMode string
@ -683,8 +684,12 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
resp[k] = res[0] resp[k] = res[0]
respMu.Unlock() respMu.Unlock()
if len(res) == 1 { if len(res) == 1 {
digest := res[0].ExporterResponse["containerimage.digest"]
if opt.Quiet {
fmt.Println(digest)
}
if opt.ImageIDFile != "" { if opt.ImageIDFile != "" {
return ioutil.WriteFile(opt.ImageIDFile, []byte(res[0].ExporterResponse["containerimage.digest"]), 0644) return ioutil.WriteFile(opt.ImageIDFile, []byte(digest), 0644)
} }
return nil return nil
} }
@ -713,6 +718,9 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
if err != nil { if err != nil {
return err return err
} }
if opt.Quiet {
fmt.Println(desc.Digest)
}
if opt.ImageIDFile != "" { if opt.ImageIDFile != "" {
return ioutil.WriteFile(opt.ImageIDFile, []byte(desc.Digest), 0644) return ioutil.WriteFile(opt.ImageIDFile, []byte(desc.Digest), 0644)
} }

View File

@ -19,7 +19,6 @@ import (
"github.com/moby/buildkit/session/auth/authprovider" "github.com/moby/buildkit/session/auth/authprovider"
"github.com/moby/buildkit/util/appcontext" "github.com/moby/buildkit/util/appcontext"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/pflag" "github.com/spf13/pflag"
) )
@ -44,10 +43,10 @@ type buildOptions struct {
imageIDFile string imageIDFile string
extraHosts []string extraHosts []string
networkMode string networkMode string
quiet bool
// unimplemented // unimplemented
squash bool squash bool
quiet bool
allow []string allow []string
@ -85,10 +84,6 @@ func runBuild(dockerCli command.Cli, in buildOptions) (err error) {
if in.squash { if in.squash {
return errors.Errorf("squash currently not implemented") return errors.Errorf("squash currently not implemented")
} }
if in.quiet {
logrus.Warnf("quiet currently not implemented")
}
ctx := appcontext.Context() ctx := appcontext.Context()
ctx, end, err := tracing.TraceCurrentCommand(ctx, "build") ctx, end, err := tracing.TraceCurrentCommand(ctx, "build")
@ -108,6 +103,12 @@ func runBuild(dockerCli command.Cli, in buildOptions) (err error) {
pull = *in.pull pull = *in.pull
} }
if in.quiet && in.progress != "auto" && in.progress != "quiet" {
return errors.Errorf("progress=%s and quiet cannot be used together", in.progress)
} else if in.quiet {
in.progress = "quiet"
}
opts := build.Options{ opts := build.Options{
Inputs: build.Inputs{ Inputs: build.Inputs{
ContextPath: in.contextPath, ContextPath: in.contextPath,
@ -121,6 +122,7 @@ func runBuild(dockerCli command.Cli, in buildOptions) (err error) {
NoCache: noCache, NoCache: noCache,
Target: in.target, Target: in.target,
ImageIDFile: in.imageIDFile, ImageIDFile: in.imageIDFile,
Quiet: in.quiet,
ExtraHosts: in.extraHosts, ExtraHosts: in.extraHosts,
NetworkMode: in.networkMode, NetworkMode: in.networkMode,
} }
@ -225,6 +227,7 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, opts map[string]bu
ctx2, cancel := context.WithCancel(context.TODO()) ctx2, cancel := context.WithCancel(context.TODO())
defer cancel() defer cancel()
printer := progress.NewPrinter(ctx2, os.Stderr, progressMode) printer := progress.NewPrinter(ctx2, os.Stderr, progressMode)
resp, err := build.Build(ctx, dis, opts, dockerAPI(dockerCli), dockerCli.ConfigFile(), printer) resp, err := build.Build(ctx, dis, opts, dockerAPI(dockerCli), dockerCli.ConfigFile(), printer)
@ -287,14 +290,14 @@ func buildCmd(dockerCli command.Cli, rootOpts *rootOptions) *cobra.Command {
flags.StringSliceVar(&options.allow, "allow", []string{}, "Allow extra privileged entitlement, e.g. network.host, security.insecure") flags.StringSliceVar(&options.allow, "allow", []string{}, "Allow extra privileged entitlement, e.g. network.host, security.insecure")
// 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")
flags.StringSliceVar(&options.extraHosts, "add-host", []string{}, "Add a custom host-to-IP mapping (host:ip)") flags.StringSliceVar(&options.extraHosts, "add-host", []string{}, "Add a custom host-to-IP mapping (host:ip)")
flags.SetAnnotation("add-host", "docs.external.url", []string{"https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file---add-host"}) flags.SetAnnotation("add-host", "docs.external.url", []string{"https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file---add-host"})
flags.StringVar(&options.imageIDFile, "iidfile", "", "Write the image ID to the file") flags.StringVar(&options.imageIDFile, "iidfile", "", "Write the image ID to the file")
// not implemented
flags.BoolVar(&options.squash, "squash", false, "Squash newly built layers into a single new layer") flags.BoolVar(&options.squash, "squash", false, "Squash newly built layers into a single new layer")
flags.MarkHidden("quiet")
flags.MarkHidden("squash") flags.MarkHidden("squash")
// hidden flags // hidden flags