add cache_to option and remove manual image pull (#46)
Port from https://github.com/thegeeklab/drone-docker-buildx/pull/124 Basically docker cache got a bit fancier and now includes a cache manifest. Manually pulling these containers isn't sufficient enough, so remove the manual pull. cache_to allows you to push your cache including a manifest to a remote location: https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-to Unfortunately this option isn't quite that useful: to fully use this feature, you need to supply your arguments in CSV format, which woodpecker unhelpfully splits into multiple completely separate arguments, breaking it :( With a further change to fix that issue I managed to turn a multistage rust build from ~3 minutes down to 20 seconds. Co-authored-by: miniduikboot <mini@duikbo.at> Reviewed-on: https://codeberg.org/woodpecker-plugins/plugin-docker-buildx/pulls/46 Reviewed-by: 6543 <6543@obermui.de> Co-authored-by: miniduikboot <miniduikboot@noreply.codeberg.org> Co-committed-by: miniduikboot <miniduikboot@noreply.codeberg.org>
This commit is contained in:
@@ -10,15 +10,6 @@ import (
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
// helper to check if args match "docker pull <image>"
|
||||
func isCommandPull(args []string) bool {
|
||||
return len(args) > 2 && args[1] == "pull"
|
||||
}
|
||||
|
||||
func commandPull(repo string) *exec.Cmd {
|
||||
return exec.Command(dockerExe, "pull", repo)
|
||||
}
|
||||
|
||||
func commandLoginEmail(login Login) *exec.Cmd {
|
||||
return exec.Command(
|
||||
dockerExe, "login",
|
||||
@@ -86,6 +77,9 @@ func commandBuild(build Build, dryrun bool) *exec.Cmd {
|
||||
for _, arg := range build.CacheFrom.Value() {
|
||||
args = append(args, "--cache-from", arg)
|
||||
}
|
||||
for _, arg := range build.CacheTo.Value() {
|
||||
args = append(args, "--cache-to", arg)
|
||||
}
|
||||
for _, arg := range build.ArgsEnv.Value() {
|
||||
addProxyValue(&build, arg)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user