From ecf2746aef4112ae680afeeff86b99a14396dafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ke=CC=81vin=20Darcel?= Date: Thu, 19 Jan 2017 12:42:33 -0600 Subject: [PATCH] Add support of --squash flag on build params --- main.go | 6 ++++++ plugin.go | 32 +++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index a901757d..59692959 100644 --- a/main.go +++ b/main.go @@ -113,6 +113,11 @@ func main() { Usage: "build args", EnvVar: "PLUGIN_BUILD_ARGS", }, + cli.BoolFlag{ + Name: "squash", + Usage: "squash the layers at build time", + EnvVar: "PLUGIN_SQUASH", + }, cli.StringFlag{ Name: "repo", Usage: "docker repository", @@ -161,6 +166,7 @@ func run(c *cli.Context) error { Context: c.String("context"), Tags: c.StringSlice("tags"), Args: c.StringSlice("args"), + Squash: c.Bool("squash"), Repo: c.String("repo"), }, Daemon: Daemon{ diff --git a/plugin.go b/plugin.go index af5bbece..b8eb926c 100644 --- a/plugin.go +++ b/plugin.go @@ -46,6 +46,7 @@ type ( Context string // Docker build context Tags []string // Docker build tags Args []string // Docker build args + Squash bool // Docker build squash Repo string // Docker build repository } @@ -109,6 +110,11 @@ func (p Plugin) Exec() error { fmt.Println("Registry credentials not provided. Guest mode enabled.") } + if p.Build.Squash && !p.Daemon.Experimental { + fmt.Println("Squash build flag is only available when Docker deamon is started with experimental flag. Ignoring...") + p.Build.Squash = false + } + // add proxy build args addProxyBuildArgs(&p.Build) @@ -177,19 +183,23 @@ func commandInfo() *exec.Cmd { // helper function to create the docker build command. func commandBuild(build Build) *exec.Cmd { - cmd := exec.Command( - dockerExe, "build", - "--pull=true", - "--rm=true", - "-f", build.Dockerfile, - "-t", build.Name, - ) - + args := []string { + "build", + "--pull=true", + "--rm=true", + "-f", build.Dockerfile, + "-t", build.Name, + } + + args = append(args, build.Context) + if build.Squash { + args = append(args, "--squash") + } for _, arg := range build.Args { - cmd.Args = append(cmd.Args, "--build-arg", arg) + args = append(args, "--build-arg", arg) } - cmd.Args = append(cmd.Args, build.Context) - return cmd + + return exec.Command(dockerExe, args...) } // helper function to add proxy values from the environment