From c8452291b77d7dfef6634e787a30b662bd6ac233 Mon Sep 17 00:00:00 2001 From: Allan Burdajewicz Date: Tue, 13 Oct 2020 09:17:51 +1000 Subject: [PATCH] [JENKINS-53866] Add imageName parameter to docker.tag() --- .../jenkinsci/plugins/docker/workflow/Docker.groovy | 8 ++++---- .../plugins/docker/workflow/DockerDSLTest.java | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy b/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy index 71308f1f1..ef79182db 100644 --- a/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy +++ b/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy @@ -153,19 +153,19 @@ class Docker implements Serializable { } } - public void tag(String tagName = parsedId.tag, boolean force = true) { + public void tag(String tagName = parsedId.tag, boolean force = true, String imageName = parsedId.userAndRepo) { docker.node { - def taggedImageName = toQualifiedImageName(parsedId.userAndRepo + ':' + tagName) + def taggedImageName = toQualifiedImageName(imageName + ':' + tagName) docker.script."${docker.shell()}" "docker tag ${id} ${taggedImageName}" return taggedImageName; } } - public void push(String tagName = parsedId.tag, boolean force = true) { + public void push(String tagName = parsedId.tag, boolean force = true, String imageName = parsedId.userAndRepo) { docker.node { // The image may have already been tagged, so the tagging may be a no-op. // That's ok since tagging is cheap. - def taggedImageName = tag(tagName, force) + def taggedImageName = tag(tagName, force, imageName) docker.script."${docker.shell()}" "docker push ${taggedImageName}" } } diff --git a/src/test/java/org/jenkinsci/plugins/docker/workflow/DockerDSLTest.java b/src/test/java/org/jenkinsci/plugins/docker/workflow/DockerDSLTest.java index 8b2d2fe31..03874d4b1 100644 --- a/src/test/java/org/jenkinsci/plugins/docker/workflow/DockerDSLTest.java +++ b/src/test/java/org/jenkinsci/plugins/docker/workflow/DockerDSLTest.java @@ -355,13 +355,19 @@ private static void grep(File dir, String text, String prefix, Set match WorkflowJob p = story.j.jenkins.createProject(WorkflowJob.class, "prj"); p.setDefinition(new CpsFlowDefinition( "node {\n" + - " try { sh 'docker rmi busybox:test' } catch (Exception e) {}\n" + + " try { sh 'docker rmi busybox:test my.registry.com/busybox:test' } catch (Exception e) {}\n" + " def busybox = docker.image('busybox');\n" + " busybox.pull();\n" + " // tag it\n" + " busybox.tag('test', /* ignored but to test that the argument is accepted */false);\n" + + " // assert that the tag exists\n" + + " sh 'docker inspect busybox:test'\n" + " // retag it\n" + - " busybox.tag('test');\n" + + " busybox.tag('test');\n" + + " // retag it with new image name\n" + + " busybox.tag('test', /* ignored but to test that the argument is accepted */ false, 'my.registry.com/busybox');\n" + + " // assert that the tag exists\n" + + " sh 'docker inspect my.registry.com/busybox:test'\n" + "}", true)); WorkflowRun b = story.j.assertBuildStatusSuccess(p.scheduleBuild2(0)); }