Add ship-it command.

Closes #203
This commit is contained in:
Mark Paluch
2022-02-18 13:22:59 +01:00
parent 85d4bc9326
commit 43e5c96e72
4 changed files with 53 additions and 4 deletions

View File

@@ -99,6 +99,18 @@ public class BuildOperations {
logger.log(train, "Distribution build: %s", summary);
}
/**
* Triggers the distribution builds for the given module.
*
* @param iteration must not be {@literal null}.
*/
public void distributeResources(ModuleIteration iteration) {
Assert.notNull(iteration, "ModuleIteration must not be null!");
doWithBuildSystem(iteration, BuildSystem::triggerDistributionBuild);
}
/**
* Performs the release build for all modules in the given {@link TrainIteration}.
*

View File

@@ -28,6 +28,8 @@ import org.springframework.data.release.build.BuildOperations;
import org.springframework.data.release.deployment.DeploymentInformation;
import org.springframework.data.release.deployment.DeploymentOperations;
import org.springframework.data.release.git.GitOperations;
import org.springframework.data.release.issues.IssueTrackerCommands;
import org.springframework.data.release.issues.github.GitHubCommands;
import org.springframework.data.release.misc.ReleaseOperations;
import org.springframework.data.release.model.ArtifactVersion;
import org.springframework.data.release.model.ModuleIteration;
@@ -53,6 +55,8 @@ class ReleaseCommands extends TimedCommand {
@NonNull ReleaseOperations misc;
@NonNull DeploymentOperations deployment;
@NonNull BuildOperations build;
@NonNull IssueTrackerCommands tracker;
@NonNull GitHubCommands gitHub;
@CliCommand("release predict")
public String predictTrainAndIteration() {
@@ -62,6 +66,30 @@ class ReleaseCommands extends TimedCommand {
orElse(null);
}
/**
* Composite command to ship a full release.
*
* @param iteration
* @throws Exception
*/
@CliCommand(value = "ship-it")
public void shipIt(@CliOption(key = "", mandatory = true) TrainIteration iteration) throws Exception {
tracker.trackerPrepare(iteration);
prepare(iteration);
buildRelease(iteration, null);
conclude(iteration);
gitHub.push(iteration);
distribute(iteration, null);
tracker.closeIteration(iteration);
}
/**
* Prepares the release of the given iteration of the given train.
*
@@ -152,10 +180,19 @@ class ReleaseCommands extends TimedCommand {
* @throws Exception
*/
@CliCommand("release distribute")
public void distribute(@CliOption(key = "", mandatory = true) TrainIteration iteration) {
public void distribute(@CliOption(key = "", mandatory = true) TrainIteration iteration,
@CliOption(key = "project", mandatory = false) String projectName) {
git.checkout(iteration);
build.distributeResources(iteration);
if (projectName != null) {
Project project = Projects.requiredByName(projectName);
ModuleIteration module = iteration.getModule(project);
build.distributeResources(module);
} else {
build.distributeResources(iteration);
}
}
private static String getTrainNameForCommonsVersion(ArtifactVersion version) {

View File

@@ -46,7 +46,7 @@ import org.springframework.util.StringUtils;
@CliComponent
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
class IssueTrackerCommands extends TimedCommand {
public class IssueTrackerCommands extends TimedCommand {
@NonNull PluginRegistry<IssueTracker, Project> tracker;
@NonNull Executor executor;

View File

@@ -45,7 +45,7 @@ import org.springframework.shell.core.annotation.CliOption;
@CliComponent
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
class GitHubCommands extends TimedCommand {
public class GitHubCommands extends TimedCommand {
@NonNull PluginRegistry<IssueTracker, Project> tracker;
@NonNull GitHub gitHub;