@@ -19,25 +19,16 @@ import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.springframework.data.release.CliComponent;
|
||||
import org.springframework.data.release.TimedCommand;
|
||||
import org.springframework.data.release.git.GitOperations;
|
||||
import org.springframework.data.release.issues.Tickets;
|
||||
import org.springframework.data.release.model.ModuleIteration;
|
||||
import org.springframework.data.release.model.Project;
|
||||
import org.springframework.data.release.model.Projects;
|
||||
import org.springframework.data.release.model.TrainIteration;
|
||||
import org.springframework.data.release.utils.ExecutionUtils;
|
||||
import org.springframework.data.release.utils.Logger;
|
||||
import org.springframework.data.util.Streamable;
|
||||
import org.springframework.shell.core.annotation.CliCommand;
|
||||
import org.springframework.shell.core.annotation.CliOption;
|
||||
import org.springframework.shell.support.table.Table;
|
||||
@@ -52,10 +43,7 @@ import org.springframework.shell.support.table.Table;
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
|
||||
public class InfrastructureCommands extends TimedCommand {
|
||||
|
||||
public static final String MAVEN_PROPERTIES = "dependency-upgrade-maven.properties";
|
||||
|
||||
DependencyOperations operations;
|
||||
ExecutorService executor;
|
||||
GitOperations git;
|
||||
InfrastructureOperations infra;
|
||||
Logger logger;
|
||||
@@ -68,57 +56,21 @@ public class InfrastructureCommands extends TimedCommand {
|
||||
|
||||
DependencyUpgradeProposals proposals = operations.getMavenWrapperDependencyUpgradeProposals(iteration);
|
||||
|
||||
Files.write(Paths.get(MAVEN_PROPERTIES), proposals.asProperties(iteration).getBytes());
|
||||
Files.write(Paths.get(InfrastructureOperations.MAVEN_PROPERTIES), proposals.asProperties(iteration).getBytes());
|
||||
|
||||
Table summary = proposals.toTable(reportAll == null ? false : reportAll);
|
||||
|
||||
logger.log(Projects.BUILD, "Upgrade summary:" + System.lineSeparator() + System.lineSeparator() + summary);
|
||||
logger.log(iteration, "Upgrade proposals written to " + MAVEN_PROPERTIES);
|
||||
logger.log(iteration, "Upgrade proposals written to " + InfrastructureOperations.MAVEN_PROPERTIES);
|
||||
}
|
||||
|
||||
@CliCommand(value = "infra maven upgrade")
|
||||
public void upgrade(@CliOption(key = "", mandatory = true) TrainIteration iteration)
|
||||
public void upgradeMavenVersion(@CliOption(key = "", mandatory = true) TrainIteration iteration)
|
||||
throws IOException, InterruptedException {
|
||||
|
||||
logger.log(iteration, "Applying Maven wrapper upgrades to Spring Data…");
|
||||
|
||||
DependencyVersions dependencyVersions = loadDependencyUpgrades(iteration);
|
||||
|
||||
if (dependencyVersions.isEmpty()) {
|
||||
throw new IllegalStateException("No version to upgrade found!");
|
||||
}
|
||||
|
||||
git.checkout(iteration.getTrain(), false);
|
||||
|
||||
List<Project> projectsToUpgrade = operations
|
||||
.getProjectsToUpgradeMavenWrapper(dependencyVersions.get(Dependencies.MAVEN), iteration);
|
||||
|
||||
ExecutionUtils.run(executor, Streamable.of(projectsToUpgrade), project -> {
|
||||
|
||||
ModuleIteration module = iteration.getModule(project);
|
||||
Tickets tickets = operations.getOrCreateUpgradeTickets(module, dependencyVersions);
|
||||
operations.upgradeMavenWrapperVersion(tickets, module, dependencyVersions);
|
||||
git.push(module);
|
||||
|
||||
// Allow GitHub to catch up with ticket notifications.
|
||||
Thread.sleep(1500);
|
||||
|
||||
operations.closeUpgradeTickets(module, tickets);
|
||||
});
|
||||
}
|
||||
|
||||
private DependencyVersions loadDependencyUpgrades(TrainIteration iteration) throws IOException {
|
||||
|
||||
if (!Files.exists(Paths.get(MAVEN_PROPERTIES))) {
|
||||
logger.log(iteration, "Cannot upgrade dependencies: " + MAVEN_PROPERTIES + " does not exist.");
|
||||
}
|
||||
|
||||
Properties properties = new Properties();
|
||||
try (FileInputStream fis = new FileInputStream(MAVEN_PROPERTIES)) {
|
||||
properties.load(fis);
|
||||
}
|
||||
|
||||
return DependencyUpgradeProposals.fromProperties(iteration, properties);
|
||||
infra.upgradeMavenVersion(iteration);
|
||||
}
|
||||
|
||||
@CliCommand(value = "infra distribute ci-properties")
|
||||
|
||||
@@ -17,10 +17,16 @@ package org.springframework.data.release.dependency;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
@@ -28,12 +34,15 @@ import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.data.release.git.Branch;
|
||||
import org.springframework.data.release.git.GitOperations;
|
||||
import org.springframework.data.release.io.Workspace;
|
||||
import org.springframework.data.release.issues.Tickets;
|
||||
import org.springframework.data.release.model.Module;
|
||||
import org.springframework.data.release.model.ModuleIteration;
|
||||
import org.springframework.data.release.model.Project;
|
||||
import org.springframework.data.release.model.Projects;
|
||||
import org.springframework.data.release.model.Train;
|
||||
import org.springframework.data.release.model.TrainIteration;
|
||||
import org.springframework.data.release.utils.ExecutionUtils;
|
||||
import org.springframework.data.release.utils.Logger;
|
||||
import org.springframework.data.util.Streamable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -47,9 +56,13 @@ public class InfrastructureOperations {
|
||||
|
||||
public static final String CI_PROPERTIES = "ci/pipeline.properties";
|
||||
|
||||
public static final String MAVEN_PROPERTIES = "dependency-upgrade-maven.properties";
|
||||
|
||||
DependencyOperations dependencies;
|
||||
Workspace workspace;
|
||||
GitOperations git;
|
||||
ExecutorService executor;
|
||||
Logger logger;
|
||||
|
||||
/**
|
||||
* Distribute {@link #CI_PROPERTIES} from {@link Projects#BUILD} to all modules within {@link TrainIteration}.
|
||||
@@ -99,4 +112,45 @@ public class InfrastructureOperations {
|
||||
}
|
||||
}
|
||||
|
||||
public void upgradeMavenVersion(TrainIteration iteration) {
|
||||
|
||||
DependencyVersions dependencyVersions = loadDependencyUpgrades(iteration);
|
||||
|
||||
if (dependencyVersions.isEmpty()) {
|
||||
throw new IllegalStateException("No version to upgrade found!");
|
||||
}
|
||||
|
||||
git.checkout(iteration.getTrain(), false);
|
||||
|
||||
List<Project> projectsToUpgrade = dependencies
|
||||
.getProjectsToUpgradeMavenWrapper(dependencyVersions.get(Dependencies.MAVEN), iteration);
|
||||
|
||||
ExecutionUtils.run(executor, Streamable.of(projectsToUpgrade), project -> {
|
||||
|
||||
ModuleIteration module = iteration.getModule(project);
|
||||
Tickets tickets = dependencies.getOrCreateUpgradeTickets(module, dependencyVersions);
|
||||
dependencies.upgradeMavenWrapperVersion(tickets, module, dependencyVersions);
|
||||
git.push(module);
|
||||
|
||||
// Allow GitHub to catch up with ticket notifications.
|
||||
Thread.sleep(1500);
|
||||
|
||||
dependencies.closeUpgradeTickets(module, tickets);
|
||||
});
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private DependencyVersions loadDependencyUpgrades(TrainIteration iteration) {
|
||||
|
||||
if (!Files.exists(Paths.get(MAVEN_PROPERTIES))) {
|
||||
logger.log(iteration, "Cannot upgrade dependencies: " + MAVEN_PROPERTIES + " does not exist.");
|
||||
}
|
||||
|
||||
Properties properties = new Properties();
|
||||
try (FileInputStream fis = new FileInputStream(MAVEN_PROPERTIES)) {
|
||||
properties.load(fis);
|
||||
}
|
||||
|
||||
return DependencyUpgradeProposals.fromProperties(iteration, properties);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user