From d3096819f6a70c107399fbcf2df23718098c926e Mon Sep 17 00:00:00 2001 From: Pedro Rodriguez Date: Sun, 10 Mar 2013 01:53:55 -0500 Subject: [PATCH] [JENKINS-10502] Option to make the build NOT fail if there is nothing to archive --- .../main/java/hudson/tasks/ArtifactArchiver.java | 15 +++++++++++---- .../hudson/tasks/ArtifactArchiver/config.jelly | 3 +++ .../tasks/ArtifactArchiver/config.properties | 1 + .../java/hudson/model/AbstractProjectTest.java | 2 +- .../java/hudson/tasks/ArtifactArchiverTest.java | 6 +++--- .../test/java/hudson/tasks/LogRotatorTest.java | 2 +- 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/hudson/tasks/ArtifactArchiver.java b/core/src/main/java/hudson/tasks/ArtifactArchiver.java index 6af8ba2c3f..39b51a0328 100644 --- a/core/src/main/java/hudson/tasks/ArtifactArchiver.java +++ b/core/src/main/java/hudson/tasks/ArtifactArchiver.java @@ -63,15 +63,18 @@ public class ArtifactArchiver extends Recorder { * Just keep the last successful artifact set, no more. */ private final boolean latestOnly; - - private static final Boolean allowEmptyArchive = - Boolean.getBoolean(ArtifactArchiver.class.getName()+".warnOnEmpty"); + + /** + * Fail (or not) the build if archiving returns nothing. + */ + private final boolean allowEmptyArchive; @DataBoundConstructor - public ArtifactArchiver(String artifacts, String excludes, boolean latestOnly) { + public ArtifactArchiver(String artifacts, String excludes, boolean latestOnly, boolean allowEmptyArchive) { this.artifacts = artifacts.trim(); this.excludes = Util.fixEmptyAndTrim(excludes); this.latestOnly = latestOnly; + this.allowEmptyArchive = allowEmptyArchive; } public String getArtifacts() { @@ -85,6 +88,10 @@ public class ArtifactArchiver extends Recorder { public boolean isLatestOnly() { return latestOnly; } + + public boolean getAllowEmptyArchive() { + return allowEmptyArchive; + } private void listenerWarnOrError(BuildListener listener, String message) { if (allowEmptyArchive) { diff --git a/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.jelly b/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.jelly index 5a6e89a699..dbce5d776d 100644 --- a/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.jelly +++ b/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.jelly @@ -34,5 +34,8 @@ THE SOFTWARE. + + + \ No newline at end of file diff --git a/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.properties b/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.properties index b7b80c0e73..3a6afefe2c 100644 --- a/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.properties +++ b/core/src/main/resources/hudson/tasks/ArtifactArchiver/config.properties @@ -21,3 +21,4 @@ # THE SOFTWARE. lastBuildOnly=Discard all but the last successful/stable artifact to save disk space +allowEmptyArchive=Do not fail build if archiving returns nothing \ No newline at end of file diff --git a/test/src/test/java/hudson/model/AbstractProjectTest.java b/test/src/test/java/hudson/model/AbstractProjectTest.java index c62e39717c..046c4e4b85 100644 --- a/test/src/test/java/hudson/model/AbstractProjectTest.java +++ b/test/src/test/java/hudson/model/AbstractProjectTest.java @@ -280,7 +280,7 @@ public class AbstractProjectTest extends HudsonTestCase { assertSymlinkForBuild(lastSuccessful, 1); assertSymlinkForBuild(lastStable, 1); // Archive artifacts that don't exist to create failure in post-build action - job.getPublishersList().add(new ArtifactArchiver("*.foo", "", false)); + job.getPublishersList().add(new ArtifactArchiver("*.foo", "", false, false)); build = job.scheduleBuild2(0, new Cause.UserCause()).get(); assertEquals(Result.FAILURE, build.getResult()); // Links should not be updated since build failed diff --git a/test/src/test/java/hudson/tasks/ArtifactArchiverTest.java b/test/src/test/java/hudson/tasks/ArtifactArchiverTest.java index ad82274c0d..762d0e512c 100644 --- a/test/src/test/java/hudson/tasks/ArtifactArchiverTest.java +++ b/test/src/test/java/hudson/tasks/ArtifactArchiverTest.java @@ -48,7 +48,7 @@ public class ArtifactArchiverTest extends HudsonTestCase { public void testSuccessVsFailure() throws Exception { FreeStyleProject project = createFreeStyleProject(); - project.getPublishersList().replaceBy(Collections.singleton(new ArtifactArchiver("f", "", true))); + project.getPublishersList().replaceBy(Collections.singleton(new ArtifactArchiver("f", "", true, false))); assertEquals("(no artifacts)", Result.FAILURE, build(project)); // #1 assertFalse(project.getBuildByNumber(1).getHasArtifacts()); project.getBuildersList().replaceBy(Collections.singleton(new CreateArtifact())); @@ -86,7 +86,7 @@ public class ArtifactArchiverTest extends HudsonTestCase { @Bug(2417) public void testStableVsUnstable() throws Exception { FreeStyleProject project = createFreeStyleProject(); - Publisher artifactArchiver = new ArtifactArchiver("f", "", true); + Publisher artifactArchiver = new ArtifactArchiver("f", "", true, false); project.getPublishersList().replaceBy(Collections.singleton(artifactArchiver)); project.getBuildersList().replaceBy(Collections.singleton(new CreateArtifact())); assertEquals(Result.SUCCESS, build(project)); // #1 @@ -123,7 +123,7 @@ public class ArtifactArchiverTest extends HudsonTestCase { @Bug(3227) public void testEmptyDirectories() throws Exception { FreeStyleProject project = createFreeStyleProject(); - Publisher artifactArchiver = new ArtifactArchiver("dir/", "", false); + Publisher artifactArchiver = new ArtifactArchiver("dir/", "", false, false); project.getPublishersList().replaceBy(Collections.singleton(artifactArchiver)); project.getBuildersList().replaceBy(Collections.singleton(new TestBuilder() { public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { diff --git a/test/src/test/java/hudson/tasks/LogRotatorTest.java b/test/src/test/java/hudson/tasks/LogRotatorTest.java index 6dda4ba23a..840562c28a 100644 --- a/test/src/test/java/hudson/tasks/LogRotatorTest.java +++ b/test/src/test/java/hudson/tasks/LogRotatorTest.java @@ -79,7 +79,7 @@ public class LogRotatorTest extends HudsonTestCase { public void testArtifactDelete() throws Exception { FreeStyleProject project = createFreeStyleProject(); project.setLogRotator(new LogRotator(-1, 6, -1, 2)); - project.getPublishersList().replaceBy(Collections.singleton(new ArtifactArchiver("f", "", true))); + project.getPublishersList().replaceBy(Collections.singleton(new ArtifactArchiver("f", "", true, false))); assertEquals("(no artifacts)", Result.FAILURE, build(project)); // #1 assertFalse(project.getBuildByNumber(1).getHasArtifacts()); project.getBuildersList().replaceBy(Collections.singleton(new CreateArtifact())); -- GitLab