Added the buildsystem abstraction

This commit is contained in:
Marcin Grzejszczak
2019-08-27 09:37:43 +02:00
parent 49e4a4a4cc
commit ca136b19ad
506 changed files with 1220 additions and 507 deletions

View File

@@ -25,9 +25,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.cloud.release.internal.Releaser;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.pom.ProcessedProject;
import org.springframework.cloud.release.internal.pom.ProjectVersion;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
import org.springframework.cloud.release.internal.project.ProcessedProject;
import org.springframework.cloud.release.internal.project.Projects;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;

View File

@@ -20,13 +20,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.release.internal.Releaser;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
import org.springframework.cloud.release.internal.gradle.GradleUpdater;
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
import org.springframework.cloud.release.internal.options.Parser;
import org.springframework.cloud.release.internal.pom.ProjectPomUpdater;
import org.springframework.cloud.release.internal.post.PostReleaseActions;
import org.springframework.cloud.release.internal.project.ProjectBuilder;
import org.springframework.cloud.release.internal.postrelease.PostReleaseActions;
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
import org.springframework.cloud.release.internal.sagan.SaganClient;
import org.springframework.cloud.release.internal.sagan.SaganUpdater;
import org.springframework.cloud.release.internal.template.TemplateGenerator;
@@ -56,8 +57,8 @@ class ReleaserConfiguration {
}
@Bean
ProjectBuilder projectBuilder() {
return new ProjectBuilder(this.properties);
ProjectCommandExecutor projectBuilder() {
return new ProjectCommandExecutor(this.properties);
}
@Bean
@@ -76,7 +77,12 @@ class ReleaserConfiguration {
}
@Bean
TemplateGenerator templateGenerator(ProjectGitHandler handler) {
ProjectGitHubHandler projectGitHubHandler() {
return new ProjectGitHubHandler(this.properties);
}
@Bean
TemplateGenerator templateGenerator(ProjectGitHubHandler handler) {
return new TemplateGenerator(this.properties, handler);
}
@@ -94,10 +100,10 @@ class ReleaserConfiguration {
@Bean
PostReleaseActions postReleaseActions(ProjectGitHandler handler,
ProjectPomUpdater pomUpdater, GradleUpdater gradleUpdater,
ProjectBuilder projectBuilder, ReleaserProperties releaserProperties,
VersionsFetcher versionsFetcher) {
return new PostReleaseActions(handler, pomUpdater, gradleUpdater, projectBuilder,
releaserProperties, versionsFetcher);
ProjectCommandExecutor projectCommandExecutor,
ReleaserProperties releaserProperties, VersionsFetcher versionsFetcher) {
return new PostReleaseActions(handler, pomUpdater, gradleUpdater,
projectCommandExecutor, releaserProperties, versionsFetcher);
}
@Bean
@@ -107,15 +113,17 @@ class ReleaserConfiguration {
}
@Bean
Releaser releaser(ProjectPomUpdater projectPomUpdater, ProjectBuilder projectBuilder,
ProjectGitHandler projectGitHandler, TemplateGenerator templateGenerator,
GradleUpdater gradleUpdater, SaganUpdater saganUpdater,
DocumentationUpdater documentationUpdater,
Releaser releaser(ProjectPomUpdater projectPomUpdater,
ProjectCommandExecutor projectCommandExecutor,
ProjectGitHandler projectGitHandler,
ProjectGitHubHandler projectGitHubHandler,
TemplateGenerator templateGenerator, GradleUpdater gradleUpdater,
SaganUpdater saganUpdater, DocumentationUpdater documentationUpdater,
PostReleaseActions postReleaseActions,
ReleaserProperties releaserProperties) {
return new Releaser(releaserProperties, projectPomUpdater, projectBuilder,
projectGitHandler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, postReleaseActions);
return new Releaser(releaserProperties, projectPomUpdater, projectCommandExecutor,
projectGitHandler, projectGitHubHandler, templateGenerator, gradleUpdater,
saganUpdater, documentationUpdater, postReleaseActions);
}
@Bean

View File

@@ -28,11 +28,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.cloud.release.internal.Releaser;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
import org.springframework.cloud.release.internal.options.Options;
import org.springframework.cloud.release.internal.options.OptionsBuilder;
import org.springframework.cloud.release.internal.pom.ProcessedProject;
import org.springframework.cloud.release.internal.pom.ProjectVersion;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.project.ProcessedProject;
import org.springframework.cloud.release.internal.project.Projects;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.util.StringUtils;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.cloud.release.internal.pom;
package org.springframework.cloud.release.internal.buildsystem;
import java.io.File;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.cloud.release.internal.pom;
package org.springframework.cloud.release.internal.buildsystem;
import java.io.File;
import java.io.IOException;

View File

@@ -20,7 +20,7 @@ import java.io.File;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.project.Projects;
import org.springframework.cloud.release.internal.template.TemplateGenerator;
/**

View File

@@ -47,20 +47,21 @@ import org.mockito.Mockito;
import org.springframework.boot.test.rule.OutputCapture;
import org.springframework.cloud.release.internal.Releaser;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.buildsystem.GradleUpdater;
import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater;
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
import org.springframework.cloud.release.internal.buildsystem.TestPomReader;
import org.springframework.cloud.release.internal.buildsystem.TestUtils;
import org.springframework.cloud.release.internal.docs.DocumentationUpdater;
import org.springframework.cloud.release.internal.docs.TestDocumentationUpdater;
import org.springframework.cloud.release.internal.git.GitTestUtils;
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
import org.springframework.cloud.release.internal.gradle.GradleUpdater;
import org.springframework.cloud.release.internal.github.ProjectGitHubHandler;
import org.springframework.cloud.release.internal.options.Options;
import org.springframework.cloud.release.internal.options.OptionsBuilder;
import org.springframework.cloud.release.internal.pom.ProjectPomUpdater;
import org.springframework.cloud.release.internal.pom.ProjectVersion;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.pom.TestPomReader;
import org.springframework.cloud.release.internal.pom.TestUtils;
import org.springframework.cloud.release.internal.post.PostReleaseActions;
import org.springframework.cloud.release.internal.project.ProjectBuilder;
import org.springframework.cloud.release.internal.postrelease.PostReleaseActions;
import org.springframework.cloud.release.internal.project.ProjectCommandExecutor;
import org.springframework.cloud.release.internal.project.Projects;
import org.springframework.cloud.release.internal.sagan.Project;
import org.springframework.cloud.release.internal.sagan.Release;
import org.springframework.cloud.release.internal.sagan.SaganClient;
@@ -94,10 +95,12 @@ public class AcceptanceTests {
File cloudProjectFolder;
TestProjectGitHandler gitHandler;
TestProjectGitHubHandler gitHandler;
NonAssertingTestProjectGitHandler nonAssertingGitHandler;
NonAssertingTestProjectGitHubHandler nonAssertingGitHubHandler;
SaganClient saganClient = Mockito.mock(SaganClient.class);
ReleaserProperties releaserProperties;
@@ -695,19 +698,22 @@ public class AcceptanceTests {
private Releaser defaultReleaser(String expectedVersion, String projectName,
ReleaserProperties properties) {
ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties);
ProjectBuilder projectBuilder = new ProjectBuilder(properties);
TestProjectGitHandler handler = new TestProjectGitHandler(properties,
ProjectCommandExecutor projectCommandExecutor = new ProjectCommandExecutor(
properties);
ProjectGitHandler gitHandler = new ProjectGitHandler(properties);
TestProjectGitHubHandler githubHandler = new TestProjectGitHubHandler(properties,
expectedVersion, projectName);
TemplateGenerator templateGenerator = new TemplateGenerator(properties, handler);
TemplateGenerator templateGenerator = new TemplateGenerator(properties,
githubHandler);
GradleUpdater gradleUpdater = new GradleUpdater(properties);
SaganUpdater saganUpdater = new SaganUpdater(this.saganClient,
this.releaserProperties);
DocumentationUpdater documentationUpdater = new TestDocumentationUpdater(
properties,
new TestDocumentationUpdater.TestProjectDocumentationUpdater(properties,
handler, "Brixton.SR1"),
gitHandler, "Brixton.SR1"),
new TestDocumentationUpdater.TestReleaseContentsUpdater(properties,
handler, templateGenerator)) {
gitHandler, templateGenerator)) {
@Override
public File updateDocsRepo(ProjectVersion currentProject,
String bomReleaseBranch) {
@@ -716,17 +722,21 @@ public class AcceptanceTests {
return file;
}
};
Releaser releaser = new Releaser(releaserProperties, pomUpdater, projectBuilder,
handler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, this.postReleaseActions);
this.gitHandler = handler;
Releaser releaser = new Releaser(releaserProperties, pomUpdater,
projectCommandExecutor, gitHandler, githubHandler, templateGenerator,
gradleUpdater, saganUpdater, documentationUpdater,
this.postReleaseActions);
this.gitHandler = githubHandler;
return releaser;
}
private Releaser defaultMetaReleaser(ReleaserProperties properties) {
ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties);
ProjectBuilder projectBuilder = new ProjectBuilder(properties);
NonAssertingTestProjectGitHandler handler = new NonAssertingTestProjectGitHandler(
ProjectCommandExecutor projectCommandExecutor = new ProjectCommandExecutor(
properties);
NonAssertingTestProjectGitHubHandler handler = new NonAssertingTestProjectGitHubHandler(
properties);
NonAssertingTestProjectGitHandler nonAssertingGitHandler = new NonAssertingTestProjectGitHandler(
properties);
TemplateGenerator templateGenerator = Mockito
.spy(new TemplateGenerator(properties, handler));
@@ -736,9 +746,9 @@ public class AcceptanceTests {
DocumentationUpdater documentationUpdater = Mockito
.spy(new TestDocumentationUpdater(properties,
new TestDocumentationUpdater.TestProjectDocumentationUpdater(
properties, handler, "Brixton.SR1"),
properties, nonAssertingGitHandler, "Brixton.SR1"),
new TestDocumentationUpdater.TestReleaseContentsUpdater(
properties, handler, templateGenerator) {
properties, nonAssertingGitHandler, templateGenerator) {
@Override
public File updateProjectRepo(Projects projects) {
File file = super.updateProjectRepo(projects);
@@ -755,10 +765,12 @@ public class AcceptanceTests {
return file;
}
});
Releaser releaser = Mockito.spy(new Releaser(releaserProperties, pomUpdater,
projectBuilder, handler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, this.postReleaseActions));
this.nonAssertingGitHandler = handler;
Releaser releaser = Mockito
.spy(new Releaser(releaserProperties, pomUpdater, projectCommandExecutor,
nonAssertingGitHandler, handler, templateGenerator, gradleUpdater,
saganUpdater, documentationUpdater, this.postReleaseActions));
this.nonAssertingGitHubHandler = handler;
this.nonAssertingGitHandler = nonAssertingGitHandler;
this.templateGenerator = templateGenerator;
this.saganUpdater = saganUpdater;
this.documentationUpdater = documentationUpdater;
@@ -849,7 +861,7 @@ public class AcceptanceTests {
return new String(Files.readAllBytes(file.toPath()));
}
class TestProjectGitHandler extends ProjectGitHandler {
class TestProjectGitHubHandler extends ProjectGitHubHandler {
final String expectedVersion;
@@ -861,7 +873,7 @@ public class AcceptanceTests {
boolean issueCreatedInStartSpringIo = false;
TestProjectGitHandler(ReleaserProperties properties, String expectedVersion,
TestProjectGitHubHandler(ReleaserProperties properties, String expectedVersion,
String projectName) {
super(properties);
this.expectedVersion = expectedVersion;
@@ -893,7 +905,7 @@ public class AcceptanceTests {
}
class NonAssertingTestProjectGitHandler extends ProjectGitHandler {
class NonAssertingTestProjectGitHubHandler extends ProjectGitHubHandler {
boolean closedMilestones = false;
@@ -901,9 +913,7 @@ public class AcceptanceTests {
boolean issueCreatedInStartSpringIo = false;
List<File> clonedProjects = new ArrayList<>();
NonAssertingTestProjectGitHandler(ReleaserProperties properties) {
NonAssertingTestProjectGitHubHandler(ReleaserProperties properties) {
super(properties);
}
@@ -928,6 +938,16 @@ public class AcceptanceTests {
return "https://foo.bar.com/" + releaseVersion.toString();
}
}
class NonAssertingTestProjectGitHandler extends ProjectGitHandler {
List<File> clonedProjects = new ArrayList<>();
NonAssertingTestProjectGitHandler(ReleaserProperties properties) {
super(properties);
}
@Override
public File cloneReleaseTrainProject() {
File file = super.cloneReleaseTrainProject();

View File

@@ -38,11 +38,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.cloud.release.internal.Releaser;
import org.springframework.cloud.release.internal.ReleaserProperties;
import org.springframework.cloud.release.internal.ReleaserPropertiesAware;
import org.springframework.cloud.release.internal.buildsystem.ProjectVersion;
import org.springframework.cloud.release.internal.options.Options;
import org.springframework.cloud.release.internal.options.OptionsBuilder;
import org.springframework.cloud.release.internal.pom.ProcessedProject;
import org.springframework.cloud.release.internal.pom.ProjectVersion;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.project.ProcessedProject;
import org.springframework.cloud.release.internal.project.Projects;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEventPublisher;