提交 d3096819 编写于 作者: P Pedro Rodriguez

[JENKINS-10502] Option to make the build NOT fail if there is nothing to archive

上级 70f81b51
......@@ -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) {
......
......@@ -34,5 +34,8 @@ THE SOFTWARE.
<f:entry title="" field="latestOnly" >
<f:checkbox title="${%lastBuildOnly}"/>
</f:entry>
<f:entry title="" field="allowEmptyArchive" >
<f:checkbox title="${%allowEmptyArchive}"/>
</f:entry>
</f:advanced>
</j:jelly>
\ No newline at end of file
......@@ -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
......@@ -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
......
......@@ -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 {
......
......@@ -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()));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册