From 66f66c1b1c5248acd321ff857fb959999e36ff26 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 | 22 ++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index a901757..5969295 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 af5bbec..fbfbc0a 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", + 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