Updates for new sagain api, s-c-build 3.1 and boot 2.6 (#243)
Updates releaser to use spring cloud build 3.1.0 Transitively uses boot 2.6 Updates releaser to use new Sagan API Fixes gh-196 Fixes gh-194
This commit is contained in:
@@ -40,6 +40,11 @@
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<profiles>
|
||||
|
||||
@@ -21,8 +21,7 @@ import releaser.internal.ReleaserProperties;
|
||||
|
||||
public class MavenBomParserAccessor {
|
||||
|
||||
public static BomParser bomParser(ReleaserProperties properties,
|
||||
CustomBomParser parser) {
|
||||
public static BomParser bomParser(ReleaserProperties properties, CustomBomParser parser) {
|
||||
return new MavenBomParser(properties, Collections.singletonList(parser));
|
||||
}
|
||||
|
||||
|
||||
@@ -31,15 +31,13 @@ public final class TestUtils {
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-wiki");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release");
|
||||
prepareLocalRepo("target/test-classes/projects/",
|
||||
"spring-cloud-release-with-snapshot");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release-with-snapshot");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-consul");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-build");
|
||||
prepareLocalRepo("target/test-classes/projects/", "spring-cloud-static-angel");
|
||||
}
|
||||
|
||||
private static void prepareLocalRepo(String buildDir, String repoPath)
|
||||
throws IOException {
|
||||
private static void prepareLocalRepo(String buildDir, String repoPath) throws IOException {
|
||||
File dotGit = new File(buildDir + repoPath + "/.git");
|
||||
File git = new File(buildDir + repoPath + "/git");
|
||||
if (git.exists()) {
|
||||
|
||||
@@ -25,8 +25,8 @@ import releaser.internal.template.TemplateGenerator;
|
||||
*/
|
||||
public class TestReleaseContentsUpdater extends ReleaseTrainContentsUpdater {
|
||||
|
||||
public TestReleaseContentsUpdater(ReleaserProperties properties,
|
||||
ProjectGitHandler handler, TemplateGenerator templateGenerator) {
|
||||
public TestReleaseContentsUpdater(ReleaserProperties properties, ProjectGitHandler handler,
|
||||
TemplateGenerator templateGenerator) {
|
||||
super(properties, handler, templateGenerator);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,8 +57,7 @@ public final class GitTestUtils {
|
||||
return new GitRepo.JGitFactory().init(project);
|
||||
}
|
||||
|
||||
public static File clonedProject(File baseDir, File projectToClone)
|
||||
throws IOException {
|
||||
public static File clonedProject(File baseDir, File projectToClone) throws IOException {
|
||||
GitRepo projectRepo = new GitRepo(baseDir);
|
||||
return projectRepo.cloneProject(new URIish(projectToClone.toURI().toURL()));
|
||||
}
|
||||
|
||||
@@ -77,15 +77,15 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
|
||||
public static Project newProject() {
|
||||
Project project = new Project();
|
||||
project.projectReleases.addAll(Arrays.asList(release("1.0.0.M8"),
|
||||
release("1.1.0.M8"), release("1.2.0.M8"), release("2.0.0.M8")));
|
||||
project.setReleases(
|
||||
Arrays.asList(release("1.0.0.M8"), release("1.1.0.M8"), release("1.2.0.M8"), release("2.0.0.M8")));
|
||||
return project;
|
||||
}
|
||||
|
||||
public static Release release(String version) {
|
||||
Release release = new Release();
|
||||
release.version = version;
|
||||
release.current = true;
|
||||
release.setVersion(version);
|
||||
release.setCurrent(true);
|
||||
return release;
|
||||
}
|
||||
|
||||
@@ -114,13 +114,11 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
|
||||
public void thenRunUpdatedTestsWereCalled(PostReleaseActions postReleaseActions) {
|
||||
BDDMockito.then(postReleaseActions).should()
|
||||
.runUpdatedTests(BDDMockito.any(Projects.class));
|
||||
BDDMockito.then(postReleaseActions).should().runUpdatedTests(BDDMockito.any(Projects.class));
|
||||
}
|
||||
|
||||
public void thenRunUpdatedTestsWereNotCalled(PostReleaseActions postReleaseActions) {
|
||||
BDDMockito.then(postReleaseActions).should(BDDMockito.never())
|
||||
.runUpdatedTests(BDDMockito.any(Projects.class));
|
||||
BDDMockito.then(postReleaseActions).should(BDDMockito.never()).runUpdatedTests(BDDMockito.any(Projects.class));
|
||||
}
|
||||
|
||||
public Iterable<RevCommit> listOfCommits(File project) throws GitAPIException {
|
||||
@@ -146,10 +144,8 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
}
|
||||
|
||||
public void tagIsPresentInOrigin(File origin, String expectedTag)
|
||||
throws GitAPIException {
|
||||
then(GitTestUtils.openGitProject(origin).tagList().call().iterator().next()
|
||||
.getName()).endsWith(expectedTag);
|
||||
public void tagIsPresentInOrigin(File origin, String expectedTag) throws GitAPIException {
|
||||
then(GitTestUtils.openGitProject(origin).tagList().call().iterator().next().getName()).endsWith(expectedTag);
|
||||
}
|
||||
|
||||
public Model pom(File dir) {
|
||||
@@ -197,8 +193,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
|
||||
public File file(String relativePath) throws URISyntaxException {
|
||||
return new File(
|
||||
AbstractSpringAcceptanceTests.class.getResource(relativePath).toURI());
|
||||
return new File(AbstractSpringAcceptanceTests.class.getResource(relativePath).toURI());
|
||||
}
|
||||
|
||||
public String text(File file) throws IOException {
|
||||
@@ -221,13 +216,12 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
|
||||
public Git clonedProject(NonAssertingTestProjectGitHandler handler, String name) {
|
||||
return GitTestUtils.openGitProject(handler.clonedProjects.stream()
|
||||
.filter(file -> file.getName().equals(name)).findFirst().get());
|
||||
return GitTestUtils.openGitProject(
|
||||
handler.clonedProjects.stream().filter(file -> file.getName().equals(name)).findFirst().get());
|
||||
}
|
||||
|
||||
public void thenUpdateReleaseTrainDocsWasCalled(PostReleaseActions actions) {
|
||||
BDDMockito.then(actions).should()
|
||||
.generateReleaseTrainDocumentation(BDDMockito.any(Projects.class));
|
||||
BDDMockito.then(actions).should().generateReleaseTrainDocumentation(BDDMockito.any(Projects.class));
|
||||
}
|
||||
|
||||
public void thenUpdateReleaseTrainDocsWasNotCalled(PostReleaseActions actions) {
|
||||
@@ -241,8 +235,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
|
||||
public void run(SpringApplicationBuilder application, Props properties,
|
||||
CatchingConsumer<ConfigurableApplicationContext> consumer) {
|
||||
try (ConfigurableApplicationContext context = application.build()
|
||||
.run(properties.toCommandLineProps())) {
|
||||
try (ConfigurableApplicationContext context = application.build().run(properties.toCommandLineProps())) {
|
||||
consumer.accept(context);
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -262,8 +255,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
|
||||
public Set<File> clonedProjects = new HashSet<>();
|
||||
|
||||
public NonAssertingTestProjectGitHandler(ReleaserProperties properties,
|
||||
Consumer<File> docsConsumer) {
|
||||
public NonAssertingTestProjectGitHandler(ReleaserProperties properties, Consumer<File> docsConsumer) {
|
||||
super(properties);
|
||||
this.docsConsumer = docsConsumer;
|
||||
}
|
||||
@@ -306,8 +298,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
|
||||
}
|
||||
|
||||
public static class TestExecutionResultHandler
|
||||
extends SpringBatchExecutionResultHandler {
|
||||
public static class TestExecutionResultHandler extends SpringBatchExecutionResultHandler {
|
||||
|
||||
public boolean exitedSuccessOrUnstable;
|
||||
|
||||
@@ -333,16 +324,12 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
public static class DefaultTestConfiguration {
|
||||
|
||||
@Bean
|
||||
SpringBatchFlowRunner mySpringBatchFlowRunner(
|
||||
StepBuilderFactory stepBuilderFactory,
|
||||
JobBuilderFactory jobBuilderFactory,
|
||||
ProjectsToRunFactory projectsToRunFactory, JobLauncher jobLauncher,
|
||||
FlowRunnerTaskExecutorSupplier flowRunnerTaskExecutorSupplier,
|
||||
ConfigurableApplicationContext context,
|
||||
SpringBatchFlowRunner mySpringBatchFlowRunner(StepBuilderFactory stepBuilderFactory,
|
||||
JobBuilderFactory jobBuilderFactory, ProjectsToRunFactory projectsToRunFactory, JobLauncher jobLauncher,
|
||||
FlowRunnerTaskExecutorSupplier flowRunnerTaskExecutorSupplier, ConfigurableApplicationContext context,
|
||||
ReleaserProperties releaserProperties, BuildReportHandler reportHandler) {
|
||||
return new SpringBatchFlowRunner(stepBuilderFactory, jobBuilderFactory,
|
||||
projectsToRunFactory, jobLauncher, flowRunnerTaskExecutorSupplier,
|
||||
context, releaserProperties, reportHandler) {
|
||||
return new SpringBatchFlowRunner(stepBuilderFactory, jobBuilderFactory, projectsToRunFactory, jobLauncher,
|
||||
flowRunnerTaskExecutorSupplier, context, releaserProperties, reportHandler) {
|
||||
@Override
|
||||
Decision decide(Options options, ReleaserTask task) {
|
||||
return Decision.CONTINUE;
|
||||
@@ -362,8 +349,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
|
||||
@Bean
|
||||
TestExecutionResultHandler testExecutionResultHandler(
|
||||
BuildReportHandler buildReportHandler,
|
||||
TestExecutionResultHandler testExecutionResultHandler(BuildReportHandler buildReportHandler,
|
||||
ConfigurableApplicationContext context) {
|
||||
return new TestExecutionResultHandler(buildReportHandler, context);
|
||||
}
|
||||
@@ -384,8 +370,7 @@ public abstract class AbstractSpringAcceptanceTests {
|
||||
}
|
||||
|
||||
public String[] toCommandLineProps() {
|
||||
return this.args.stream().map(s -> "--" + s).collect(Collectors.toList())
|
||||
.toArray(new String[0]);
|
||||
return this.args.stream().map(s -> "--" + s).collect(Collectors.toList()).toArray(new String[0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -83,14 +83,12 @@ public class ArgsBuilder {
|
||||
}
|
||||
|
||||
private void removeIfPresent(String string) {
|
||||
this.args.stream().filter(s -> s.startsWith(string)).findAny()
|
||||
.ifPresent(s -> this.args.remove(s));
|
||||
this.args.stream().filter(s -> s.startsWith(string)).findAny().ifPresent(s -> this.args.remove(s));
|
||||
}
|
||||
|
||||
public ArgsBuilder projectsToSkip(String... toSkip) throws Exception {
|
||||
removeIfPresent("releaser.meta-release.projects-to-skip");
|
||||
this.args.add(
|
||||
"releaser.meta-release.projects-to-skip=" + String.join(",", toSkip));
|
||||
this.args.add("releaser.meta-release.projects-to-skip=" + String.join(",", toSkip));
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -149,18 +147,15 @@ public class ArgsBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArgsBuilder cloneDestinationDirectory(File cloneDestinationDirectory)
|
||||
throws Exception {
|
||||
public ArgsBuilder cloneDestinationDirectory(File cloneDestinationDirectory) throws Exception {
|
||||
removeIfPresent("releaser.git.clone-destination-dir");
|
||||
this.args.add("releaser.git.clone-destination-dir="
|
||||
+ cloneDestinationDirectory.toString());
|
||||
this.args.add("releaser.git.clone-destination-dir=" + cloneDestinationDirectory.toString());
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArgsBuilder releaseTrainUrl(String relativePath) throws Exception {
|
||||
removeIfPresent("releaser.git.release-train-bom-url");
|
||||
this.args.add("releaser.git.release-train-bom-url="
|
||||
+ file(relativePath).toURI().toString());
|
||||
this.args.add("releaser.git.release-train-bom-url=" + file(relativePath).toURI().toString());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,45 +36,34 @@ import static org.assertj.core.api.BDDAssertions.then;
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
public abstract class AbstractSpringMetaReleaseAcceptanceTests
|
||||
extends AbstractSpringAcceptanceTests {
|
||||
public abstract class AbstractSpringMetaReleaseAcceptanceTests extends AbstractSpringAcceptanceTests {
|
||||
|
||||
public ArgsBuilder metaReleaseArgs(File project) throws Exception {
|
||||
return new ArgsBuilder(project, this.tmp)
|
||||
.releaseTrainUrl("/projects/spring-cloud-release/")
|
||||
.projectsToSkip("spring-boot", "spring-cloud-build",
|
||||
"spring-cloud-commons", "spring-cloud-stream",
|
||||
"spring-cloud-task", "spring-cloud-function", "spring-cloud-aws",
|
||||
"spring-cloud-bus", "spring-cloud-config", "spring-cloud-netflix",
|
||||
"spring-cloud-cloudfoundry", "spring-cloud-gateway",
|
||||
"spring-cloud-security", "spring-cloud-zookeeper",
|
||||
"spring-cloud-sleuth", "spring-cloud-contract",
|
||||
"spring-cloud-vault")
|
||||
return new ArgsBuilder(project, this.tmp).releaseTrainUrl("/projects/spring-cloud-release/")
|
||||
.projectsToSkip("spring-boot", "spring-cloud-build", "spring-cloud-commons", "spring-cloud-stream",
|
||||
"spring-cloud-task", "spring-cloud-function", "spring-cloud-aws", "spring-cloud-bus",
|
||||
"spring-cloud-config", "spring-cloud-netflix", "spring-cloud-cloudfoundry",
|
||||
"spring-cloud-gateway", "spring-cloud-security", "spring-cloud-zookeeper",
|
||||
"spring-cloud-sleuth", "spring-cloud-contract", "spring-cloud-vault")
|
||||
.mavenBuildCommand("echo '{{profiles}}' > /tmp/executed_build")
|
||||
.mavenPublishCommand("echo '{{profiles}}' > /tmp/executed_docs")
|
||||
.mavenDeployCommand("echo '{{profiles}}' > /tmp/executed_deploy")
|
||||
.gitOrgUrl("file://" + this.temporaryFolder.getAbsolutePath())
|
||||
.releaseTrainBomUrl(
|
||||
file("/projects/spring-cloud-release/").toURI().toString());
|
||||
.releaseTrainBomUrl(file("/projects/spring-cloud-release/").toURI().toString());
|
||||
}
|
||||
|
||||
public ArgsBuilder metaReleaseArgsForParallel(File project) throws Exception {
|
||||
return new ArgsBuilder(project, this.tmp)
|
||||
.releaseTrainUrl("/projects/spring-cloud-release/")
|
||||
.projectsToSkip("spring-boot", "spring-cloud-commons",
|
||||
"spring-cloud-stream", "spring-cloud-task",
|
||||
"spring-cloud-function", "spring-cloud-aws", "spring-cloud-bus",
|
||||
"spring-cloud-config", "spring-cloud-netflix",
|
||||
"spring-cloud-cloudfoundry", "spring-cloud-gateway",
|
||||
"spring-cloud-security", "spring-cloud-zookeeper",
|
||||
"spring-cloud-sleuth", "spring-cloud-contract",
|
||||
"spring-cloud-vault")
|
||||
return new ArgsBuilder(project, this.tmp).releaseTrainUrl("/projects/spring-cloud-release/")
|
||||
.projectsToSkip("spring-boot", "spring-cloud-commons", "spring-cloud-stream", "spring-cloud-task",
|
||||
"spring-cloud-function", "spring-cloud-aws", "spring-cloud-bus", "spring-cloud-config",
|
||||
"spring-cloud-netflix", "spring-cloud-cloudfoundry", "spring-cloud-gateway",
|
||||
"spring-cloud-security", "spring-cloud-zookeeper", "spring-cloud-sleuth",
|
||||
"spring-cloud-contract", "spring-cloud-vault")
|
||||
.mavenBuildCommand("echo '{{profiles}}' > /tmp/executed_build")
|
||||
.mavenPublishCommand("echo '{{profiles}}' > /tmp/executed_docs")
|
||||
.mavenDeployCommand("echo '{{profiles}}' > /tmp/executed_deploy")
|
||||
.gitOrgUrl("file://" + this.temporaryFolder.getAbsolutePath())
|
||||
.releaseTrainBomUrl(
|
||||
file("/projects/spring-cloud-release/").toURI().toString());
|
||||
.releaseTrainBomUrl(file("/projects/spring-cloud-release/").toURI().toString());
|
||||
}
|
||||
|
||||
public Map<String, String> edgwareSr10() {
|
||||
@@ -104,12 +93,9 @@ public abstract class AbstractSpringMetaReleaseAcceptanceTests
|
||||
public void thenAllStepsWereExecutedForEachProject(
|
||||
NonAssertingTestProjectGitHandler nonAssertingTestProjectGitHandler) {
|
||||
nonAssertingTestProjectGitHandler.clonedProjects.stream()
|
||||
.filter(f -> !f.getName().contains("angel")
|
||||
&& !f.getName().equals("spring-cloud"))
|
||||
.forEach(project -> {
|
||||
then(Arrays.asList("spring-cloud-starter-build",
|
||||
"spring-cloud-consul"))
|
||||
.contains(pom(project).getArtifactId());
|
||||
.filter(f -> !f.getName().contains("angel") && !f.getName().equals("spring-cloud")).forEach(project -> {
|
||||
then(Arrays.asList("spring-cloud-starter-build", "spring-cloud-consul"))
|
||||
.contains(pom(project).getArtifactId());
|
||||
then(new File("/tmp/executed_build")).exists();
|
||||
then(new File("/tmp/executed_deploy")).exists();
|
||||
then(new File("/tmp/executed_docs")).exists();
|
||||
@@ -117,21 +103,18 @@ public abstract class AbstractSpringMetaReleaseAcceptanceTests
|
||||
}
|
||||
|
||||
public void thenSaganWasCalled(SaganUpdater saganUpdater) {
|
||||
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan(
|
||||
BDDMockito.any(File.class), BDDMockito.anyString(),
|
||||
BDDMockito.any(ProjectVersion.class),
|
||||
BDDMockito.any(ProjectVersion.class), BDDMockito.any(Projects.class));
|
||||
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan(BDDMockito.any(File.class),
|
||||
BDDMockito.anyString(), BDDMockito.any(ProjectVersion.class), BDDMockito.any(ProjectVersion.class),
|
||||
BDDMockito.any(Projects.class));
|
||||
}
|
||||
|
||||
public void thenSaganWasNotCalled(SaganUpdater saganUpdater) {
|
||||
BDDMockito.then(saganUpdater).should(BDDMockito.never()).updateSagan(
|
||||
BDDMockito.any(File.class), BDDMockito.anyString(),
|
||||
BDDMockito.any(ProjectVersion.class),
|
||||
BDDMockito.any(ProjectVersion.class), BDDMockito.any(Projects.class));
|
||||
BDDMockito.then(saganUpdater).should(BDDMockito.never()).updateSagan(BDDMockito.any(File.class),
|
||||
BDDMockito.anyString(), BDDMockito.any(ProjectVersion.class), BDDMockito.any(ProjectVersion.class),
|
||||
BDDMockito.any(Projects.class));
|
||||
}
|
||||
|
||||
public static class NonAssertingTestProjectGitHubHandler
|
||||
extends ProjectGitHubHandler {
|
||||
public static class NonAssertingTestProjectGitHubHandler extends ProjectGitHubHandler {
|
||||
|
||||
boolean closedMilestones = false;
|
||||
|
||||
@@ -154,8 +137,7 @@ public abstract class AbstractSpringMetaReleaseAcceptanceTests
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createIssueInStartSpringIo(Projects projects,
|
||||
ProjectVersion version) {
|
||||
public void createIssueInStartSpringIo(Projects projects, ProjectVersion version) {
|
||||
this.issueCreatedInStartSpringIo = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user