add cache-from

This commit is contained in:
Seth Pollack 2017-09-26 14:42:57 -04:00 committed by Ryan Sullivan
parent 9589237541
commit a48b59645a
No known key found for this signature in database
GPG Key ID: A81AC24687421396
2 changed files with 22 additions and 0 deletions

View File

@ -150,6 +150,10 @@ func main() {
Name: "target",
Usage: "build target",
EnvVar: "PLUGIN_TARGET",
cli.StringSliceFlag{
Name: "cache-from",
Usage: "cache from",
EnvVar: "PLUGIN_CACHE_FROM",
},
cli.BoolFlag{
Name: "squash",
@ -245,6 +249,7 @@ func run(c *cli.Context) error {
Target: c.String("target"),
Squash: c.Bool("squash"),
Pull: c.BoolT("pull-image"),
CacheFrom: c.String("cache-from"),
Compress: c.Bool("compress"),
Repo: c.String("repo"),
Labels: c.StringSlice("custom-labels"),

View File

@ -47,6 +47,7 @@ type (
Target string // Docker build target
Squash bool // Docker build squash
Pull bool // Docker build pull
CacheFrom string // Docker build cache-from
Compress bool // Docker build compress
Repo string // Docker build repository
LabelSchema []string // label-schema Label map
@ -104,6 +105,15 @@ func (p Plugin) Exec() error {
fmt.Println("Registry credentials not provided. Guest mode enabled.")
}
// pre-pull cache image
if p.Build.CacheFrom != "" {
cmd := commandPull(p.Build.CacheFrom)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
trace(cmd)
cmd.Run()
}
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
@ -162,6 +172,10 @@ func commandLogin(login Login) *exec.Cmd {
)
}
func commandPull(repo string) *exec.Cmd {
return exec.Command(dockerExe, "pull", repo)
}
func commandLoginEmail(login Login) *exec.Cmd {
return exec.Command(
dockerExe, "login",
@ -204,6 +218,9 @@ func commandBuild(build Build) *exec.Cmd {
if build.NoCache {
args = append(args, "--no-cache")
}
if build.CacheFrom != "" {
args = append(args, "--cache-from", build.CacheFrom)
}
for _, arg := range build.ArgsEnv {
addProxyValue(&build, arg)
}