From 7632b990312b02fd4dbc62210ee845a999ef427c Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 21 Jan 2020 14:17:36 +0100 Subject: [PATCH] Don't run post release tasks if main ones failed --- .../SpringMetaReleaseAcceptanceTests.java | 44 +++++++++++++++++++ .../spring/DefaultSpringReleaser.java | 3 ++ 2 files changed, 47 insertions(+) diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java index 4b14ada7..17ab10fb 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java @@ -38,6 +38,7 @@ import releaser.internal.sagan.SaganUpdater; import releaser.internal.spring.Arguments; import releaser.internal.spring.SpringReleaser; import releaser.internal.tasks.ReleaseReleaserTask; +import releaser.internal.tasks.TrainPostReleaseReleaserTask; import releaser.internal.tasks.composite.MetaReleaseCompositeTask; import releaser.internal.tasks.composite.ReleaseCompositeTask; import releaser.internal.tasks.release.BuildProjectReleaseTask; @@ -368,6 +369,7 @@ public class SpringMetaReleaseAcceptanceTests .getBean(TestExecutionResultHandler.class); FirstTask firstTask = context.getBean(FirstTask.class); SecondTask secondTask = context.getBean(SecondTask.class); + PostReleaseTask postReleaseTask = context.getBean(PostReleaseTask.class); ExecutionResult result = releaser .release(new OptionsBuilder().metaRelease(true).options()); @@ -386,6 +388,8 @@ public class SpringMetaReleaseAcceptanceTests .equals("spring-cloud-release"))); BDDMockito.then(secondTask).should(BDDMockito.never()) .runTask(BDDMockito.any(Arguments.class)); + BDDMockito.then(postReleaseTask).should(BDDMockito.never()) + .runTask(BDDMockito.any(Arguments.class)); }); } @@ -521,6 +525,11 @@ public class SpringMetaReleaseAcceptanceTests return BDDMockito.spy(new SecondTask()); } + @Bean + PostReleaseTask firstPostReleaseTask() { + return BDDMockito.spy(new PostReleaseTask()); + } + @Bean MetaReleaseCompositeTask metaReleaseCompositeTask(ApplicationContext context) { return new MetaReleaseCompositeTask(context); @@ -604,3 +613,38 @@ class SecondTask implements ReleaseReleaserTask { } } + +class PostReleaseTask implements TrainPostReleaseReleaserTask { + + @Override + public String name() { + return "third"; + } + + @Override + public String shortName() { + return "3"; + } + + @Override + public String header() { + return "THIRD"; + } + + @Override + public String description() { + return name(); + } + + @Override + public ExecutionResult runTask(Arguments args) + throws BuildUnstableException, RuntimeException { + return ExecutionResult.success(); + } + + @Override + public int getOrder() { + return 3; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/spring/DefaultSpringReleaser.java b/releaser-spring/src/main/java/releaser/internal/spring/DefaultSpringReleaser.java index 36111485..114e0417 100644 --- a/releaser-spring/src/main/java/releaser/internal/spring/DefaultSpringReleaser.java +++ b/releaser-spring/src/main/java/releaser/internal/spring/DefaultSpringReleaser.java @@ -66,6 +66,9 @@ class DefaultSpringReleaser implements SpringReleaser { ProjectsToRun projectsToRun = releaseProjects(optionsAndProperties); ExecutionResult releaseTasksExecutionResult = runReleaseTasks( optionsAndProperties, projectsToRun, releaseTasksToRun); + if (releaseTasksExecutionResult.isFailure()) { + return releaseTasksExecutionResult; + } TasksToRun postReleaseTrainTasksToRun = postReleaseTrainTasksFromOptions( optionsAndProperties); ExecutionResult postReleaseTrainTasksExecutionResult = runPostReleaseTasks(