From 6b2df22567b55aa071b23e0b267308de6eb2645a Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 9 Apr 2019 10:24:32 -0400 Subject: [PATCH 1/5] Demonstrating that API in JENKINS-44892 can be used as a replacement for the special methods in StepDescriptor. --- pom.xml | 14 +++++++-- .../docker/workflow/RegistryEndpointStep.java | 29 ++++++++++--------- .../workflow/RegistryEndpointStepTest.java | 5 ++++ 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 8bef5b17a..c1e60adee 100644 --- a/pom.xml +++ b/pom.xml @@ -31,9 +31,10 @@ 1.19 -SNAPSHOT - 2.60.3 + 2.121.1 8 - 2.18 + true + 2.20-rc517.251dd3bdb066 2.12 2.25 @@ -130,4 +131,13 @@ test + + + + org.jenkins-ci.plugins + structs + 1.18-rc266.794506c68411 + + + diff --git a/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java b/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java index 672e89b6b..e11f70f00 100644 --- a/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java +++ b/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java @@ -33,7 +33,6 @@ import hudson.model.Run; import hudson.model.TaskListener; import java.io.IOException; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -43,6 +42,7 @@ import org.jenkinsci.plugins.docker.commons.credentials.DockerRegistryEndpoint; import org.jenkinsci.plugins.docker.commons.credentials.KeyMaterialFactory; import org.jenkinsci.plugins.docker.commons.tools.DockerTool; +import org.jenkinsci.plugins.structs.describable.CustomDescribableModel; import org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable; import org.jenkinsci.plugins.workflow.steps.Step; import org.jenkinsci.plugins.workflow.steps.StepContext; @@ -105,7 +105,7 @@ public static class Execution extends AbstractEndpointStepExecution { } - @Extension public static class DescriptorImpl extends StepDescriptor { + @Extension public static class DescriptorImpl extends StepDescriptor implements CustomDescribableModel { @Override public String getFunctionName() { return "withDockerRegistry"; @@ -123,17 +123,7 @@ public static class Execution extends AbstractEndpointStepExecution { return true; } - @Override public UninstantiatedDescribable uninstantiate(Step step) throws UnsupportedOperationException { - RegistryEndpointStep s = (RegistryEndpointStep) step; - Map args = new TreeMap<>(); - args.put("url", s.registry.getUrl()); - args.put("credentialsId", s.registry.getCredentialsId()); - args.put("toolName", s.toolName); - args.values().removeAll(Collections.singleton(null)); - return new UninstantiatedDescribable(args); - } - - @Override public Step newInstance(Map arguments) throws Exception { + @Override public Map customInstantiate(Map arguments) { arguments = new HashMap<>(arguments); if (arguments.containsKey("url") || arguments.containsKey("credentialsId")) { if (arguments.containsKey("registry")) { @@ -143,9 +133,20 @@ public static class Execution extends AbstractEndpointStepExecution { } else if (!arguments.containsKey("registry")) { throw new IllegalArgumentException("must specify url/credentialsId (or registry)"); } - return super.newInstance(arguments); + return arguments; } + @Override public UninstantiatedDescribable customUninstantiate(UninstantiatedDescribable ud) { + Object registry = ud.getArguments().get("registry"); + if (registry instanceof UninstantiatedDescribable) { + Map arguments = new TreeMap<>(ud.getArguments()); + arguments.remove("registry"); + arguments.putAll(((UninstantiatedDescribable) registry).getArguments()); + return ud.withArguments(arguments); + } + return ud; + } + @SuppressWarnings("unchecked") @Override public Set> getRequiredContext() { return ImmutableSet.of(TaskListener.class, EnvVars.class, Node.class, Run.class, FilePath.class, Launcher.class); diff --git a/src/test/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStepTest.java b/src/test/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStepTest.java index df2074143..b94f67017 100644 --- a/src/test/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStepTest.java +++ b/src/test/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStepTest.java @@ -72,13 +72,18 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import org.jenkinsci.plugins.structs.describable.DescribableModel; +import org.jvnet.hudson.test.LoggerRule; public class RegistryEndpointStepTest { @Rule public JenkinsRule r = new JenkinsRule(); + @Rule public LoggerRule logging = new LoggerRule(); @Issue("JENKINS-51395") @Test public void configRoundTrip() throws Exception { + logging.record(DescribableModel.class, Level.FINE); { // Recommended syntax. SnippetizerTester st = new SnippetizerTester(r); RegistryEndpointStep step = new RegistryEndpointStep(new DockerRegistryEndpoint("https://myreg/", null)); From fec21a8cefa683e1e06c6882392b00582d15d64b Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Wed, 24 Apr 2019 11:38:33 -0400 Subject: [PATCH 2/5] Oops, contradictory annotations! --- .../jenkinsci/plugins/docker/workflow/client/DockerClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java b/src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java index 37c4a303b..88c656a4c 100644 --- a/src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java +++ b/src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java @@ -276,7 +276,7 @@ private LaunchResult launch(@Nonnull EnvVars launchEnv, boolean quiet, @Nonnull private LaunchResult launch(@Nonnull EnvVars launchEnv, boolean quiet, FilePath pwd, @Nonnull String... args) throws IOException, InterruptedException { return launch(launchEnv, quiet, pwd, new ArgumentListBuilder(args)); } - private LaunchResult launch(@CheckForNull @Nonnull EnvVars launchEnv, boolean quiet, FilePath pwd, @Nonnull ArgumentListBuilder args) throws IOException, InterruptedException { + private LaunchResult launch(@Nonnull EnvVars launchEnv, boolean quiet, FilePath pwd, @Nonnull ArgumentListBuilder args) throws IOException, InterruptedException { // Prepend the docker command args.prepend(DockerTool.getExecutable(toolName, node, launcher.getListener(), launchEnv)); From cdf8d6322d38822c388c2ae9e7d063daf087e5cb Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Mon, 3 Jun 2019 20:02:18 -0400 Subject: [PATCH 3/5] Updated to releases. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c1e60adee..a3bdffc75 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.121.1 8 true - 2.20-rc517.251dd3bdb066 + 2.20 2.12 2.25 @@ -136,7 +136,7 @@ org.jenkins-ci.plugins structs - 1.18-rc266.794506c68411 + 1.18 From 1e6b7460b86fed6f57c2d5603c4cb1b544f10c52 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 18 Aug 2020 13:48:28 -0400 Subject: [PATCH 4/5] Trailing spaces --- .../jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java b/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java index e11f70f00..abad6776f 100644 --- a/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java +++ b/src/main/java/org/jenkinsci/plugins/docker/workflow/RegistryEndpointStep.java @@ -146,7 +146,7 @@ public static class Execution extends AbstractEndpointStepExecution { } return ud; } - + @SuppressWarnings("unchecked") @Override public Set> getRequiredContext() { return ImmutableSet.of(TaskListener.class, EnvVars.class, Node.class, Run.class, FilePath.class, Launcher.class); From 0aa01cbb03d33194e49ef05dc9dd55010f8533b8 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 28 Jun 2022 07:45:07 -0400 Subject: [PATCH 5/5] https://github.com/jenkinsci/structs-plugin/pull/65 already in current dependency version --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index ff40daaf0..0752c303d 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,6 @@ -SNAPSHOT 2.332.1 8 - true 2.2097.v33db_b_de764b_e