From 7303467c771cc98f0efcdf8cbb2e0538ad496b72 Mon Sep 17 00:00:00 2001 From: cyphar Date: Tue, 17 Jun 2014 00:08:02 +1000 Subject: [PATCH] server: buildfile: ensure that ONBUILD triggers aren't committed This patch fixes the bug where ONBUILD triggers are committed each build step created during the ONBUILD trigger execution, since the triggers are only wiped *after* all ONBUILD trigger steps have been committed. This was fixed by simply copying the ONBUILD triggers and wiping the config *before* committing anything. Docker-DCO-1.1-Signed-off-by: Aleksa Sarai (github: cyphar) --- server/buildfile.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/buildfile.go b/server/buildfile.go index 26fc49890a..5b94c9423a 100644 --- a/server/buildfile.go +++ b/server/buildfile.go @@ -123,7 +123,12 @@ func (b *buildFile) CmdFrom(name string) error { if nTriggers := len(b.config.OnBuild); nTriggers != 0 { fmt.Fprintf(b.errStream, "# Executing %d build triggers\n", nTriggers) } - for n, step := range b.config.OnBuild { + + // Copy the ONBUILD triggers, and remove them from the config, since the config will be commited. + onBuildTriggers := b.config.OnBuild + b.config.OnBuild = []string{} + + for n, step := range onBuildTriggers { splitStep := strings.Split(step, " ") stepInstruction := strings.ToUpper(strings.Trim(splitStep[0], " ")) switch stepInstruction { @@ -136,7 +141,6 @@ func (b *buildFile) CmdFrom(name string) error { return err } } - b.config.OnBuild = []string{} return nil }