diff --git a/releaser-core/src/main/java/releaser/internal/Releaser.java b/releaser-core/src/main/java/releaser/internal/Releaser.java index fe8ba8a7..bc5dc372 100644 --- a/releaser-core/src/main/java/releaser/internal/Releaser.java +++ b/releaser-core/src/main/java/releaser/internal/Releaser.java @@ -377,4 +377,21 @@ public class Releaser { return ExecutionResult.skipped(); } + public ExecutionResult createReleaseBundle(boolean commercial, ProjectVersion versionFromBom, Boolean dryRun) { + if (dryRun) { + log.info("\nWon't create a release bundle for a dry run"); + return ExecutionResult.skipped(); + } + if (versionFromBom.isSnapshot()) { + log.info("\nWon't create a release bundle for a SNAPSHOT version"); + return ExecutionResult.skipped(); + } + if (!commercial) { + log.info("\nWon't create a release bundle for a non commercial project"); + return ExecutionResult.skipped(); + } + log.info("\nCreating a release bundle"); + return ExecutionResult.success(); + } + } diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java new file mode 100644 index 00000000..3d4c001e --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java @@ -0,0 +1,71 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import releaser.internal.Releaser; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.ProjectPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class CreateProjectReleaseBundlePostReleaseTask implements ProjectPostReleaseReleaserTask { + + /** + * Order of this task. The higher value, the lower order. + */ + public static final int ORDER = 60; + + private final Releaser releaser; + + public CreateProjectReleaseBundlePostReleaseTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "createReleaseBundle"; + } + + @Override + public String shortName() { + return "b"; + } + + @Override + public String header() { + return "CREATING RELEASE BUNDLE"; + } + + @Override + public String description() { + return "Creates a release bundle for the project"; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException, RuntimeException { + return this.releaser.createReleaseBundle(args.properties.isCommercial(), args.versionFromBom, args.options.dryRun); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java new file mode 100644 index 00000000..7463b505 --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java @@ -0,0 +1,71 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import releaser.internal.Releaser; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.TrainPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class CreateReleaseTrainReleaseBundlePostReleaseTask implements TrainPostReleaseReleaserTask { + + /** + * Order of this task. The higher value, the lower order. + */ + public static final int ORDER = 160; + + private final Releaser releaser; + + public CreateReleaseTrainReleaseBundlePostReleaseTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "createReleaseTrainReleaseBundlePostReleaseTask"; + } + + @Override + public String shortName() { + return "rtb"; + } + + @Override + public String header() { + return "CREATE RELEASE TRAIN RELEASE BUNDLE"; + } + + @Override + public String description() { + return "Creates a release train release bundle"; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException, RuntimeException { + return releaser.createReleaseBundle(args.properties.isCommercial(), args.versionFromBom, args.options.dryRun); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java index ce824c13..f7acf615 100644 --- a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java @@ -92,4 +92,18 @@ class PostReleaseTasksConfiguration { return new UpdateStartSpringIoTrainPostReleaseTask(releaser); } + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.create-release-train-release-bundle") + CreateReleaseTrainReleaseBundlePostReleaseTask createReleaseTrainReleaseBundlePostReleaseTask(Releaser releaser) { + return new CreateReleaseTrainReleaseBundlePostReleaseTask(releaser); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.create-project-release-bundle") + CreateProjectReleaseBundlePostReleaseTask createProjectReleaseBundlePostReleaseTask(Releaser releaser) { + return new CreateProjectReleaseBundlePostReleaseTask(releaser); + } + }