diff --git a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilder.java b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilder.java index d03ad5c..8df1136 100644 --- a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilder.java +++ b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilder.java @@ -24,19 +24,21 @@ public class DescriptionSetterBuilder extends Builder { private final String regexp; private final String description; private final boolean appendMode; + private final boolean envVariable; @DataBoundConstructor - public DescriptionSetterBuilder(String regexp, String description, boolean appendMode) { + public DescriptionSetterBuilder(String regexp, String description, boolean appendMode, boolean envVariable) { this.regexp = regexp; this.description = Util.fixEmptyAndTrim(description); this.appendMode = appendMode; + this.envVariable = envVariable; } @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException { - return DescriptionSetterHelper.setDescription(build, listener, regexp, description, appendMode); + return DescriptionSetterHelper.setDescription(build, listener, regexp, description, appendMode, envVariable); } @Extension diff --git a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterHelper.java b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterHelper.java index 00bdcab..6f74a2e 100644 --- a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterHelper.java +++ b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterHelper.java @@ -39,7 +39,7 @@ public class DescriptionSetterHelper { public static boolean setDescription( AbstractBuild build, BuildListener listener, String regexp, String description) throws InterruptedException { - return setDescription(build, listener, regexp, description, true); + return setDescription(build, listener, regexp, description, true, true); } /** @@ -51,12 +51,19 @@ public static boolean setDescription( * @param regexp the regular expression to apply to the build log. * @param description the description to set. * @param appendMode if true, description is added to the current one + * @param envVariable if true, environment variable containing the + * description is set. * @return true, regardless of if the regular expression matched and a * description could be set or not. * @throws InterruptedException if the build is interrupted by the user. */ public static boolean setDescription( - AbstractBuild build, BuildListener listener, String regexp, String description, boolean appendMode) + AbstractBuild build, + BuildListener listener, + String regexp, + String description, + boolean appendMode, + boolean envVariable) throws InterruptedException { try { String result = null; @@ -87,7 +94,9 @@ public static boolean setDescription( if (build.getDescription() == null) build.setDescription(result); else build.setDescription((appendMode ? build.getDescription() + htmlBreak : "") + result); - setEnvironmentVariable(result, build); + if (envVariable) { + setEnvironmentVariable(result, build); + } listener.getLogger().println(LOG_PREFIX + " Description set: " + result); } catch (IOException e) { diff --git a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisher.java b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisher.java index 5a9507e..14e69a0 100644 --- a/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisher.java +++ b/src/main/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisher.java @@ -38,6 +38,7 @@ public class DescriptionSetterPublisher extends Recorder implements MatrixAggreg private final String descriptionForFailed; private final boolean setForMatrix; private final boolean appendMode; + private final boolean envVariable; @Deprecated private transient boolean setForFailed = false; @@ -52,13 +53,15 @@ public DescriptionSetterPublisher( String description, String descriptionForFailed, boolean setForMatrix, - boolean appendMode) { + boolean appendMode, + boolean envVariable) { this.regexp = regexp; this.regexpForFailed = regexpForFailed; this.description = Util.fixEmptyAndTrim(description); this.descriptionForFailed = Util.fixEmptyAndTrim(descriptionForFailed); this.setForMatrix = setForMatrix; this.appendMode = appendMode; + this.envVariable = envVariable; } public BuildStepMonitor getRequiredMonitorService() { @@ -78,13 +81,14 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListen listener, useUnstable ? regexpForFailed : regexp, useUnstable ? descriptionForFailed : description, - appendMode); + appendMode, + envVariable); } private Object readResolve() throws ObjectStreamException { if (explicitNotRegexp) { return new DescriptionSetterPublisher( - null, null, regexp, setForFailed ? regexpForFailed : null, false, false); + null, null, regexp, setForFailed ? regexpForFailed : null, false, false, true); } else { return this; } diff --git a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/config.jelly b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/config.jelly index f66fd5b..2024ca1 100644 --- a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/config.jelly +++ b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/config.jelly @@ -10,4 +10,7 @@ + + + diff --git a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/help.html b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/help.html index 4e8d668..80f6484 100644 --- a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/help.html +++ b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterBuilder/help.html @@ -6,6 +6,6 @@ A description can be based on the log output (by searching it using a regular expression), or it can be hardcoded.

- The description is exposed as DESCRIPTION_SETTER_DESCRIPTION environment variable + Optionally, the description is exposed as DESCRIPTION_SETTER_DESCRIPTION environment variable (considered insecure on Jenkins 2)

diff --git a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/config.jelly b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/config.jelly index 51a2316..ec59d63 100644 --- a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/config.jelly +++ b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/config.jelly @@ -22,6 +22,9 @@ + + + diff --git a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/help.html b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/help.html index d35fc31..be974da 100644 --- a/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/help.html +++ b/src/main/resources/hudson/plugins/descriptionsetter/DescriptionSetterPublisher/help.html @@ -6,6 +6,6 @@ A description can be based on the log output (by searching it using a regular expression), or it can be hardcoded.

- The description is exposed as DESCRIPTION_SETTER_DESCRIPTION environment variable + Optionally, the description is exposed as DESCRIPTION_SETTER_DESCRIPTION environment variable (considered insecure on Jenkins 2)

diff --git a/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilderTest.java b/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilderTest.java index 6fe852e..e947196 100644 --- a/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilderTest.java +++ b/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterBuilderTest.java @@ -56,8 +56,8 @@ public void testNullMatch2() throws Exception { public void testAppendDescriptionInBuilder() throws Exception { FreeStyleProject project = createFreeStyleProject(); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false)); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test2", true)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false, true)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test2", true, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); assertEquals("test1 test2", build.getDescription()); @@ -69,8 +69,8 @@ public void testAppendDescriptionInBuilder() throws Exception { public void testRewriteDescriptionInBuilder() throws Exception { FreeStyleProject project = createFreeStyleProject(); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false)); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test2", false)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false, true)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test2", false, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); assertEquals("test2", build.getDescription()); } @@ -79,7 +79,7 @@ private String getDescription(String text, Result result, String regexp, String throws Exception { FreeStyleProject project = createFreeStyleProject(); project.getBuildersList().add(new TestBuilder(text, result)); - project.getBuildersList().add(new DescriptionSetterBuilder(regexp, description, appendMode)); + project.getBuildersList().add(new DescriptionSetterBuilder(regexp, description, appendMode, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); return build.getDescription(); } diff --git a/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisherTest.java b/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisherTest.java index 8a0ddf9..3842736 100644 --- a/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisherTest.java +++ b/src/test/java/hudson/plugins/descriptionsetter/DescriptionSetterPublisherTest.java @@ -83,8 +83,8 @@ public void testNullMatch2() throws Exception { public void testAppendDescriptionInPublisher() throws Exception { FreeStyleProject project = createFreeStyleProject(); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false)); - project.getPublishersList().add(new DescriptionSetterPublisher("", "", "test2", "", false, true)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false, true)); + project.getPublishersList().add(new DescriptionSetterPublisher("", "", "test2", "", false, true, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); assertEquals("test1 test2", build.getDescription()); @@ -96,8 +96,8 @@ public void testAppendDescriptionInPublisher() throws Exception { public void testRewriteDescriptionInPublisher() throws Exception { FreeStyleProject project = createFreeStyleProject(); - project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false)); - project.getPublishersList().add(new DescriptionSetterPublisher("", "", "test2", "", false, false)); + project.getBuildersList().add(new DescriptionSetterBuilder("", "test1", false, true)); + project.getPublishersList().add(new DescriptionSetterPublisher("", "", "test2", "", false, false, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); assertEquals("test2", build.getDescription()); } @@ -115,7 +115,7 @@ private String getDescription( project.getBuildersList().add(new TestBuilder(text, result)); project.getPublishersList() .add(new DescriptionSetterPublisher( - regexp, regexpForFailed, description, descriptionForFailed, false, appendMode)); + regexp, regexpForFailed, description, descriptionForFailed, false, appendMode, true)); FreeStyleBuild build = project.scheduleBuild2(0).get(); return build.getDescription(); }