From a6caa67c6fe967f7e2db4cdefeb99ba6d8cb6621 Mon Sep 17 00:00:00 2001 From: Alvaro Date: Fri, 30 Jan 2015 09:10:19 +0200 Subject: [PATCH 1/2] Be able to force docker to update the tags --- plugin/publish/docker.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugin/publish/docker.go b/plugin/publish/docker.go index eda38e298..7cafb35b0 100644 --- a/plugin/publish/docker.go +++ b/plugin/publish/docker.go @@ -33,6 +33,7 @@ type Docker struct { KeepBuild bool `yaml:"keep_build"` Tag string `yaml:"tag"` Tags []string `yaml:"tags"` + ForceTags bool `yaml:"force_tags"` Condition *condition.Condition `yaml:"when,omitempty"` } @@ -100,7 +101,11 @@ func (d *Docker) Write(f *buildfile.Buildfile) { // Tag and push all tags for _, tag := range d.Tags { if tag != buildImageTag { - f.WriteCmd(fmt.Sprintf("docker tag %s:%s %s:%s", d.ImageName, buildImageTag, d.ImageName, tag)) + var options string + if d.ForceTags { + options = "-f" + } + f.WriteCmd(fmt.Sprintf("docker tag %s %s:%s %s:%s", options, d.ImageName, buildImageTag, d.ImageName, tag)) } f.WriteCmd(fmt.Sprintf("docker push %s:%s", d.ImageName, tag)) From 4b59896f4cf1bf137cce681dcb1ea5cf06d1906f Mon Sep 17 00:00:00 2001 From: Alvaro Date: Fri, 30 Jan 2015 10:07:55 +0200 Subject: [PATCH 2/2] Fix the tests. Not very elegant, but now the strings have an extra space to allow putting the options there. --- plugin/publish/docker_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/publish/docker_test.go b/plugin/publish/docker_test.go index a23797b5e..915d28f83 100644 --- a/plugin/publish/docker_test.go +++ b/plugin/publish/docker_test.go @@ -214,7 +214,7 @@ func TestTagsNoSingle(t *testing.T) { if !strings.Contains(response, "docker build --pull -t username/image:release-0.2") { t.Fatalf("Response: " + response + " isn't tagging images using our first custom tag\n\n") } - if !strings.Contains(response, "docker tag username/image:release-0.2 username/image:release-latest") { + if !strings.Contains(response, "docker tag username/image:release-0.2 username/image:release-latest") { t.Fatalf("Response: " + response + " isn't tagging images using our second custom tag\n\n") } if !strings.Contains(response, "docker push username/image:release-0.2") { @@ -256,10 +256,10 @@ func TestTagsWithSingle(t *testing.T) { if !strings.Contains(response, "docker build --pull -t username/image:release-0.3") { t.Fatalf("Response: " + response + " isn't tagging images using our first custom tag\n\n") } - if !strings.Contains(response, "docker tag username/image:release-0.3 username/image:release-0.2") { + if !strings.Contains(response, "docker tag username/image:release-0.3 username/image:release-0.2") { t.Fatalf("Response: " + response + " isn't tagging images using our second custom tag\n\n") } - if !strings.Contains(response, "docker tag username/image:release-0.3 username/image:release-latest") { + if !strings.Contains(response, "docker tag username/image:release-0.3 username/image:release-latest") { t.Fatalf("Response: " + response + " isn't tagging images using our third custom tag\n\n") } if !strings.Contains(response, "docker push username/image:release-0.2") {