diff --git a/.gitignore b/.gitignore index fa8a04b..62ee6df 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ _testmain.go coverage.out drone-docker + +# IDE/Editor related files +**.swp diff --git a/main.go b/main.go index 6e61c7a..eb7e4a1 100644 --- a/main.go +++ b/main.go @@ -118,6 +118,11 @@ func main() { Usage: "squash the layers at build time", EnvVar: "PLUGIN_SQUASH", }, + cli.BoolTFlag{ + Name: "cache", + Usage: "don't attempt to re-build layers of the image that already exist", + EnvVar: "PLUGIN_USE_CACHE", + }, cli.BoolFlag{ Name: "compress", Usage: "compress the build context using gzip", @@ -172,6 +177,7 @@ func run(c *cli.Context) error { Tags: c.StringSlice("tags"), Args: c.StringSlice("args"), Squash: c.Bool("squash"), + Cache: c.Bool("cache"), Compress: c.Bool("compress"), Repo: c.String("repo"), }, diff --git a/plugin.go b/plugin.go index e2c9237..14b222d 100644 --- a/plugin.go +++ b/plugin.go @@ -47,6 +47,7 @@ type ( Tags []string // Docker build tags Args []string // Docker build args Squash bool // Docker build squash + Cache bool // Docker build without pulling Compress bool // Docker build compress Repo string // Docker build repository } @@ -187,7 +188,6 @@ func commandInfo() *exec.Cmd { func commandBuild(build Build) *exec.Cmd { args := []string { "build", - "--pull=true", "--rm=true", "-f", build.Dockerfile, "-t", build.Name, @@ -200,6 +200,11 @@ func commandBuild(build Build) *exec.Cmd { if build.Compress { args = append(args, "--compress") } + if build.Cache { + args = append(args, "--pull=false") + } else { + args = append(args, "--pull=true") + } for _, arg := range build.Args { args = append(args, "--build-arg", arg) }