Suppress verbose "Sending build context" messages in non tty scenarios
This fix tries to address the issue raised in 25661 where verbose "Sending build context" messages were not suppressed in non tty (e.g. log file) sencarios. This fix suppress the "Sending build context" message (other than the last one) if the output is not a tty. The last update of the "Sending build context" message is still sent to the output. This fix has been tested manually: ``` docker build -t tmp . > build.log ``` The output is (only one "Sending build context"): ``` Sending build context to Docker daemon 249.4 MB Step 1 : FROM busybox ---> 2b8fd9751c4c Step 2 : RUN echo 'test' ---> Using cache ---> 7db298b6c493 Successfully built 7db298b6c493 ``` This fix fixes 25661. Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
parent
5ac0342e82
commit
b4ba575a28
|
@ -104,6 +104,22 @@ func NewBuildCommand(dockerCli *client.DockerCli) *cobra.Command {
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// lastProgressOutput is the same as progress.Output except
|
||||||
|
// that it only output with the last update. It is used in
|
||||||
|
// non terminal scenarios to depresss verbose messages
|
||||||
|
type lastProgressOutput struct {
|
||||||
|
output progress.Output
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteProgress formats progress information from a ProgressReader.
|
||||||
|
func (out *lastProgressOutput) WriteProgress(prog progress.Progress) error {
|
||||||
|
if !prog.LastUpdate {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return out.output.WriteProgress(prog)
|
||||||
|
}
|
||||||
|
|
||||||
func runBuild(dockerCli *client.DockerCli, options buildOptions) error {
|
func runBuild(dockerCli *client.DockerCli, options buildOptions) error {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -211,6 +227,9 @@ func runBuild(dockerCli *client.DockerCli, options buildOptions) error {
|
||||||
|
|
||||||
// Setup an upload progress bar
|
// Setup an upload progress bar
|
||||||
progressOutput := streamformatter.NewStreamFormatter().NewProgressOutput(progBuff, true)
|
progressOutput := streamformatter.NewStreamFormatter().NewProgressOutput(progBuff, true)
|
||||||
|
if !dockerCli.IsTerminalOut() {
|
||||||
|
progressOutput = &lastProgressOutput{output: progressOutput}
|
||||||
|
}
|
||||||
|
|
||||||
var body io.Reader = progress.NewProgressReader(buildCtx, progressOutput, 0, "", "Sending build context to Docker daemon")
|
var body io.Reader = progress.NewProgressReader(buildCtx, progressOutput, 0, "", "Sending build context to Docker daemon")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue