Polishing.
Extract staging repository lifecycle code into methods. Closes: #38
This commit is contained in:
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
|
||||
import org.assertj.core.util.VisibleForTesting;
|
||||
import org.springframework.data.release.deployment.DeploymentInformation;
|
||||
import org.springframework.data.release.deployment.StagingRepository;
|
||||
import org.springframework.data.release.model.Iteration;
|
||||
import org.springframework.data.release.model.Module;
|
||||
import org.springframework.data.release.model.ModuleIteration;
|
||||
import org.springframework.data.release.model.Phase;
|
||||
@@ -149,6 +150,49 @@ public class BuildOperations {
|
||||
logger.log(iteration, "Build finished");
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a staging repository.
|
||||
*
|
||||
* @param iteration
|
||||
* @return
|
||||
*/
|
||||
public StagingRepository openStagingRepository(Iteration iteration) {
|
||||
|
||||
BuildSystem orchestrator = buildSystems.getRequiredPluginFor(Projects.BUILD);
|
||||
|
||||
return iteration.isPublic() ? orchestrator.open() : StagingRepository.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Close a staging repository.
|
||||
*
|
||||
* @param stagingRepository
|
||||
* @return
|
||||
*/
|
||||
public void closeStagingRepository(StagingRepository stagingRepository) {
|
||||
|
||||
BuildSystem orchestrator = buildSystems.getRequiredPluginFor(Projects.BUILD);
|
||||
|
||||
if (stagingRepository.isPresent()) {
|
||||
orchestrator.close(stagingRepository);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Promote the staging repository.
|
||||
*
|
||||
* @param stagingRepository
|
||||
* @return
|
||||
*/
|
||||
public void releaseStagingRepository(StagingRepository stagingRepository) {
|
||||
|
||||
BuildSystem orchestrator = buildSystems.getRequiredPluginFor(Projects.BUILD);
|
||||
|
||||
if (stagingRepository.isPresent()) {
|
||||
orchestrator.release(stagingRepository);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Run smoke tests for a {@link TrainIteration} against a {@link StagingRepository}.
|
||||
*
|
||||
@@ -165,7 +209,7 @@ public class BuildOperations {
|
||||
|
||||
/**
|
||||
* Releases a repository of staged artifacts for this {@link ModuleIteration}.
|
||||
*
|
||||
*
|
||||
* @param iteration
|
||||
* @param stagingRepository
|
||||
*/
|
||||
@@ -200,25 +244,22 @@ public class BuildOperations {
|
||||
*/
|
||||
public List<DeploymentInformation> performRelease(TrainIteration iteration) {
|
||||
|
||||
ModuleIteration module = iteration.getModule(Projects.BUILD);
|
||||
BuildSystem orchestrator = buildSystems.getRequiredPluginFor(module.getProject());
|
||||
|
||||
StagingRepository stagingRepository = iteration.getIteration().isPublic() ? orchestrator.open()
|
||||
: StagingRepository.EMPTY;
|
||||
Iteration it = iteration.getIteration();
|
||||
StagingRepository stagingRepository = it.isPublic() ? openStagingRepository(it) : StagingRepository.EMPTY;
|
||||
|
||||
BuildExecutor.Summary<DeploymentInformation> summary = executor.doWithBuildSystemOrdered(iteration,
|
||||
(buildSystem, moduleIteration) -> buildSystem.deploy(moduleIteration, stagingRepository));
|
||||
|
||||
if (stagingRepository.isPresent()) {
|
||||
orchestrator.close(stagingRepository);
|
||||
closeStagingRepository(stagingRepository);
|
||||
}
|
||||
|
||||
smokeTests(iteration, stagingRepository);
|
||||
|
||||
logger.log(iteration, "Release: %s", summary);
|
||||
|
||||
if (iteration.getIteration().isPublic() && stagingRepository.isPresent()) {
|
||||
release(module, stagingRepository);
|
||||
if (stagingRepository.isPresent()) {
|
||||
releaseStagingRepository(stagingRepository);
|
||||
}
|
||||
|
||||
return summary.getExecutions().stream().map(BuildExecutor.ExecutionResult::getResult).collect(Collectors.toList());
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Maven configuration properties.
|
||||
@@ -44,6 +45,15 @@ public class MavenProperties {
|
||||
private boolean consoleLogger = true;
|
||||
private boolean parallelize = false;
|
||||
|
||||
public MavenProperties() {
|
||||
|
||||
String maven_home = System.getenv("MAVEN_HOME");
|
||||
|
||||
if (StringUtils.hasText(maven_home)) {
|
||||
mavenHome = new File(maven_home);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the local Maven repository location to use. In case the given folder does not already exists it's
|
||||
* created.
|
||||
|
||||
@@ -20,6 +20,8 @@ import lombok.Value;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* Value object representing a OSS Sonatype staging repository.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
@Value(staticConstructor = "of")
|
||||
|
||||
@@ -29,16 +29,16 @@ class JavaVersionUnitTests {
|
||||
@Test
|
||||
void shouldParseDockerTag() {
|
||||
|
||||
assertThat(JavaVersion.fromDockerTag("8u312-b07-jdk").getName()).isEqualTo("Java 1.8.0_312");
|
||||
assertThat(JavaVersion.fromDockerTag("8u322-b06-jre-focal").getName()).isEqualTo("Java 1.8.0_322");
|
||||
assertThat(JavaVersion.fromDockerTag("11.0.13_8-jdk").getName()).isEqualTo("Java 11.0.13 (Temurin)");
|
||||
assertThat(JavaVersion.fromDockerTag("17.0.1_12").getName()).isEqualTo("Java 17.0.1 (Temurin)");
|
||||
assertThat(JavaVersion.fromDockerTag("8u312-b07-jdk").getName()).isEqualTo("JDK 1.8.0_312");
|
||||
assertThat(JavaVersion.fromDockerTag("8u322-b06-jre-focal").getName()).isEqualTo("JDK 1.8.0_322");
|
||||
assertThat(JavaVersion.fromDockerTag("11.0.13_8-jdk").getName()).isEqualTo("JDK 11.0.13 (Temurin)");
|
||||
assertThat(JavaVersion.fromDockerTag("17.0.1_12").getName()).isEqualTo("JDK 17.0.1 (Temurin)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldConsiderImplementor() {
|
||||
|
||||
assertThat(JavaVersion.fromDockerTag("8u312-b07-jdk").withImplementor("Temurin").getName())
|
||||
.isEqualTo("Java 1.8.0_312 (Temurin)");
|
||||
.contains("JDK 1.8.0_312 (Temurin)");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user