diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java index dd886d93..461c1c63 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java @@ -345,12 +345,13 @@ public class Releaser implements ReleaserPropertiesAware { } } - public void updateSagan(File project, ProjectVersion releaseVersion) { + public void updateSagan(File project, ProjectVersion releaseVersion, + Projects projects) { String currentBranch = this.projectGitHandler.currentBranch(project); ProjectVersion originalVersion = new ProjectVersion(project); try { this.saganUpdater.updateSagan(project, currentBranch, originalVersion, - releaseVersion); + releaseVersion, projects); log.info("\nSuccessfully updated Sagan for branch [{}]", currentBranch); } catch (Exception ex) { diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/sagan/SaganUpdater.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/sagan/SaganUpdater.java index bb11fd38..6f1345cb 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/sagan/SaganUpdater.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/sagan/SaganUpdater.java @@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory; import org.springframework.cloud.release.internal.ReleaserProperties; import org.springframework.cloud.release.internal.project.ProjectVersion; +import org.springframework.cloud.release.internal.project.Projects; import org.springframework.util.StringUtils; /** @@ -48,14 +49,16 @@ public class SaganUpdater { } public void updateSagan(File projectFile, String branch, - ProjectVersion originalVersion, ProjectVersion currentVersion) { + ProjectVersion originalVersion, ProjectVersion currentVersion, + Projects projects) { if (!this.releaserProperties.getSagan().isUpdateSagan()) { log.info("Will not update sagan, since the switch to do so " + "is off. Set [releaser.sagan.update-sagan] to [true] to change that"); return; } - ReleaseUpdate update = releaseUpdate(branch, originalVersion, currentVersion); - updateSaganForNonSnapshot(branch, originalVersion, currentVersion); + ReleaseUpdate update = releaseUpdate(branch, originalVersion, currentVersion, + projects); + updateSaganForNonSnapshot(branch, originalVersion, currentVersion, projects); log.info("Updating Sagan releases with \n\n{}", update); Project project = this.saganClient.updateRelease(currentVersion.projectName, Collections.singletonList(update)); @@ -142,7 +145,7 @@ public class SaganUpdater { } private void updateSaganForNonSnapshot(String branch, ProjectVersion originalVersion, - ProjectVersion version) { + ProjectVersion version, Projects projects) { if (!version.isSnapshot()) { log.info( "Version is non snapshot [{}]. Will remove all older versions and mark this as current", @@ -156,7 +159,8 @@ public class SaganUpdater { if (version.isRelease() || version.isServiceRelease()) { String bumpedSnapshot = toSnapshot(version.bumpedVersion()); ReleaseUpdate snapshotUpdate = releaseUpdate(branch, originalVersion, - new ProjectVersion(version.projectName, bumpedSnapshot)); + new ProjectVersion(version.projectName, bumpedSnapshot), + projects); log.info("Updating Sagan with bumped snapshot \n\n[{}]", snapshotUpdate); this.saganClient.updateRelease(version.projectName, Collections.singletonList(snapshotUpdate)); @@ -183,13 +187,13 @@ public class SaganUpdater { } private ReleaseUpdate releaseUpdate(String branch, ProjectVersion originalVersion, - ProjectVersion version) { + ProjectVersion version, Projects projects) { ReleaseUpdate update = new ReleaseUpdate(); update.groupId = originalVersion.groupId(); update.artifactId = version.projectName; update.version = version.version; update.releaseStatus = version(version); - update.apiDocUrl = referenceUrl(branch, version); + update.apiDocUrl = referenceUrl(branch, version, projects); update.refDocUrl = update.apiDocUrl; update.current = true; return update; @@ -218,7 +222,30 @@ public class SaganUpdater { return ""; } - private String referenceUrl(String branch, ProjectVersion version) { + private String releaseTrainVersion(Projects projects) { + String releaseTrainProjectName = this.releaserProperties.getMetaRelease() + .getReleaseTrainProjectName(); + return projects.containsProject(releaseTrainProjectName) + ? projects.forName(releaseTrainProjectName).version : ""; + } + + private String referenceUrl(String branch, ProjectVersion version, + Projects projects) { + String releaseTrainVersion = releaseTrainVersion(projects); + // up till Greenwich we have a different URL for docs + // if there's no release train, will assume that 2.2.x is the version that has the + // new docs + boolean hasReleaseTrainVersion = StringUtils.hasText(releaseTrainVersion); + boolean newDocs = hasReleaseTrainVersion + ? releaseTrainVersion.toLowerCase().charAt(0) > 'g' + : version.version.compareTo("2.2") > 0; + if (newDocs) { + return newReferenceUrl(branch, version); + } + return oldReferenceUrl(branch, version); + } + + private String newReferenceUrl(String branch, ProjectVersion version) { if (!version.isSnapshot()) { // static/sleuth/{version}/ return "https://cloud.spring.io/spring-cloud-static/" + version.projectName @@ -233,4 +260,19 @@ public class SaganUpdater { + "/reference/html/"; } + private String oldReferenceUrl(String branch, ProjectVersion version) { + if (!version.isSnapshot()) { + // static/sleuth/{version}/ + return "https://cloud.spring.io/spring-cloud-static/" + version.projectName + + "/{version}/"; + } + if (branch.toLowerCase().contains("master")) { + // sleuth/ + return "https://cloud.spring.io/" + version.projectName + "/" + + version.projectName + ".html"; + } + // sleuth/1.1.x/ + return "https://cloud.spring.io/" + version.projectName + "/" + branch + "/"; + } + } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterOldDocsTest.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterOldDocsTest.java new file mode 100644 index 00000000..f3814cbe --- /dev/null +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterOldDocsTest.java @@ -0,0 +1,259 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.internal.sagan; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.ArgumentMatcher; +import org.mockito.BDDMockito; +import org.mockito.Mockito; + +import org.springframework.cloud.release.internal.ReleaserProperties; +import org.springframework.cloud.release.internal.project.ProjectVersion; +import org.springframework.cloud.release.internal.project.Projects; + +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.never; + +/** + * @author Marcin Grzejszczak + */ +public class SaganUpdaterOldDocsTest { + + SaganClient saganClient = Mockito.mock(SaganClient.class); + + ReleaserProperties properties = new ReleaserProperties(); + + SaganUpdater saganUpdater = new SaganUpdater(this.saganClient, this.properties); + + Projects projects = new Projects(); + + @Before + public void setup() { + Project project = new Project(); + project.projectReleases.addAll(Arrays.asList(release("1.0.0.RC1"), + release("1.1.0.BUILD-SNAPSHOT"), release("2.0.0.M4"))); + BDDMockito.given(this.saganClient.getProject(anyString())).willReturn(project); + } + + private Release release(String version) { + Release release = new Release(); + release.version = version; + release.current = true; + return release; + } + + @Test + public void should_not_update_sagan_when_switch_is_off() { + this.properties.getSagan().setUpdateSagan(false); + + this.saganUpdater.updateSagan(new File("."), "master", version("2.2.0.M1"), + version("2.2.0.M1"), projects); + + then(this.saganClient).shouldHaveZeroInteractions(); + } + + @Test + public void should_update_sagan_releases_for_milestone() { + this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.M1"), + version("1.0.0.M1"), projects); + + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.0.0.M1", + "https://cloud.spring.io/spring-cloud-static/foo/{version}/", + "PRERELEASE"))); + } + + @Test + public void should_update_sagan_releases_for_rc() { + this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.RC1"), + version("1.0.0.RC1"), projects); + + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.0.0.RC1", + "https://cloud.spring.io/spring-cloud-static/foo/{version}/", + "PRERELEASE"))); + } + + @Test + public void should_not_update_docs_for_sagan_when_current_version_older() { + given(this.saganClient.updateRelease(BDDMockito.anyString(), + BDDMockito.anyList())).willReturn(a2_0_0_ReleaseProject()); + + this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.RC1"), + version("1.0.0.RC1"), projects); + + then(this.saganClient).should(BDDMockito.never()) + .patchProject(BDDMockito.any(Project.class)); + + } + + private Project a2_0_0_ReleaseProject() { + Project project = new Project(); + Release release = new Release(); + release.version = "2.0.0.RELEASE"; + release.current = true; + project.projectReleases = Collections.singletonList(release); + return project; + } + + @Test + public void should_not_update_docs_for_sagan_when_files_exist_but_content_does_not_differ() + throws IOException { + Project project = a2_0_0_ReleaseProject(); + project.rawOverview = "new overview"; + project.rawBootConfig = "new boot"; + given(this.saganClient.updateRelease(BDDMockito.anyString(), + BDDMockito.anyList())).willReturn(project); + + Path tmp = Files.createTempDirectory("releaser-test"); + createFile(tmp, "sagan-index.adoc", "new overview"); + createFile(tmp, "sagan-boot.adoc", "new boot"); + SaganUpdater saganUpdater = new SaganUpdater(this.saganClient, this.properties) { + @Override + File docsModule(File projectFile) { + return tmp.toFile(); + } + }; + + saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), + version("3.0.0.RC1"), projects); + + then(this.saganClient).should(BDDMockito.never()) + .patchProject(BDDMockito.any(Project.class)); + } + + @Test + public void should_update_docs_for_sagan_when_current_version_newer_and_only_overview_adoc_exists() + throws IOException { + given(this.saganClient.updateRelease(BDDMockito.anyString(), + BDDMockito.anyList())).willReturn(a2_0_0_ReleaseProject()); + + Path tmp = Files.createTempDirectory("releaser-test"); + createFile(tmp, "sagan-index.adoc", "new text"); + SaganUpdater saganUpdater = new SaganUpdater(this.saganClient, this.properties) { + @Override + File docsModule(File projectFile) { + return tmp.toFile(); + } + }; + + saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), + version("3.0.0.RC1"), projects); + + then(this.saganClient).should().patchProject( + BDDMockito.argThat(argument -> "new text".equals(argument.rawOverview))); + } + + @Test + public void should_update_docs_for_sagan_when_current_version_newer_and_only_boot_adoc_exists() + throws IOException { + given(this.saganClient.updateRelease(BDDMockito.anyString(), + BDDMockito.anyList())).willReturn(a2_0_0_ReleaseProject()); + + Path tmp = Files.createTempDirectory("releaser-test"); + createFile(tmp, "sagan-boot.adoc", "new text"); + SaganUpdater saganUpdater = new SaganUpdater(this.saganClient, this.properties) { + @Override + File docsModule(File projectFile) { + return tmp.toFile(); + } + }; + + saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), + version("3.0.0.RC1"), projects); + + then(this.saganClient).should().patchProject(BDDMockito + .argThat(argument -> "new text".equals(argument.rawBootConfig))); + } + + private void createFile(Path tmp, String filename, String text) throws IOException { + File overviewAdoc = new File(tmp.toString(), filename); + overviewAdoc.createNewFile(); + Files.write(overviewAdoc.toPath(), text.getBytes()); + } + + private ProjectVersion version(String version) { + return new ProjectVersion("foo", version); + } + + @Test + public void should_update_sagan_from_master() { + ProjectVersion projectVersion = version("1.0.0.BUILD-SNAPSHOT"); + + this.saganUpdater.updateSagan(new File("."), "master", projectVersion, + projectVersion, projects); + + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.0.0.BUILD-SNAPSHOT", + "https://cloud.spring.io/foo/foo.html", "SNAPSHOT"))); + } + + @Test + public void should_update_sagan_from_release_version() { + ProjectVersion projectVersion = version("1.0.0.RELEASE"); + + this.saganUpdater.updateSagan(new File("."), "master", projectVersion, + projectVersion, projects); + + then(this.saganClient).should().deleteRelease("foo", "1.0.0.RC1"); + then(this.saganClient).should().deleteRelease("foo", "1.0.0.BUILD-SNAPSHOT"); + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.0.0.RELEASE", + "https://cloud.spring.io/spring-cloud-static/foo/{version}/", + "GENERAL_AVAILABILITY"))); + then(this.saganClient).should().deleteRelease("foo", "1.0.0.BUILD-SNAPSHOT"); + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.0.1.BUILD-SNAPSHOT", + "https://cloud.spring.io/foo/foo.html", "SNAPSHOT"))); + } + + @Test + public void should_update_sagan_from_non_master() { + ProjectVersion projectVersion = version("1.1.0.BUILD-SNAPSHOT"); + + this.saganUpdater.updateSagan(new File("."), "1.1.x", projectVersion, + projectVersion, projects); + + then(this.saganClient).should(never()).deleteRelease(anyString(), anyString()); + then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), + BDDMockito.argThat(withReleaseUpdate("1.1.0.BUILD-SNAPSHOT", + "https://cloud.spring.io/foo/1.1.x/", "SNAPSHOT"))); + } + + private ArgumentMatcher> withReleaseUpdate(final String version, + final String refDocUrl, final String releaseStatus) { + return argument -> { + ReleaseUpdate item = argument.get(0); + return "foo".equals(item.artifactId) + && releaseStatus.equals(item.releaseStatus) + && version.equals(item.version) && refDocUrl.equals(item.apiDocUrl) + && refDocUrl.equals(item.refDocUrl) && item.current; + }; + } + +} diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterTest.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterTest.java index 709cdc1f..92e1d3af 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterTest.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/sagan/SaganUpdaterTest.java @@ -32,6 +32,7 @@ import org.mockito.Mockito; import org.springframework.cloud.release.internal.ReleaserProperties; import org.springframework.cloud.release.internal.project.ProjectVersion; +import org.springframework.cloud.release.internal.project.Projects; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; @@ -49,11 +50,13 @@ public class SaganUpdaterTest { SaganUpdater saganUpdater = new SaganUpdater(this.saganClient, this.properties); + Projects projects = new Projects(); + @Before public void setup() { Project project = new Project(); - project.projectReleases.addAll(Arrays.asList(release("1.0.0.RC1"), - release("1.1.0.BUILD-SNAPSHOT"), release("2.0.0.M4"))); + project.projectReleases.addAll(Arrays.asList(release("2.2.0.RC1"), + release("2.3.0.BUILD-SNAPSHOT"), release("2.2.0.M4"))); BDDMockito.given(this.saganClient.getProject(anyString())).willReturn(project); } @@ -68,30 +71,30 @@ public class SaganUpdaterTest { public void should_not_update_sagan_when_switch_is_off() { this.properties.getSagan().setUpdateSagan(false); - this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.M1"), - version("1.0.0.M1")); + this.saganUpdater.updateSagan(new File("."), "master", version("2.2.0.M1"), + version("2.2.0.M1"), projects); then(this.saganClient).shouldHaveZeroInteractions(); } @Test public void should_update_sagan_releases_for_milestone() { - this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.M1"), - version("1.0.0.M1")); + this.saganUpdater.updateSagan(new File("."), "master", version("2.2.0.M1"), + version("2.2.0.M1"), projects); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.0.0.M1", + BDDMockito.argThat(withReleaseUpdate("2.2.0.M1", "https://cloud.spring.io/spring-cloud-static/foo/{version}/reference/html/", "PRERELEASE"))); } @Test public void should_update_sagan_releases_for_rc() { - this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.RC1"), - version("1.0.0.RC1")); + this.saganUpdater.updateSagan(new File("."), "master", version("2.2.0.RC1"), + version("2.2.0.RC1"), projects); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.0.0.RC1", + BDDMockito.argThat(withReleaseUpdate("2.2.0.RC1", "https://cloud.spring.io/spring-cloud-static/foo/{version}/reference/html/", "PRERELEASE"))); } @@ -101,8 +104,8 @@ public class SaganUpdaterTest { given(this.saganClient.updateRelease(BDDMockito.anyString(), BDDMockito.anyList())).willReturn(a2_0_0_ReleaseProject()); - this.saganUpdater.updateSagan(new File("."), "master", version("1.0.0.RC1"), - version("1.0.0.RC1")); + this.saganUpdater.updateSagan(new File("."), "master", version("2.2.0.RC1"), + version("2.2.0.RC1"), projects); then(this.saganClient).should(BDDMockito.never()) .patchProject(BDDMockito.any(Project.class)); @@ -138,7 +141,7 @@ public class SaganUpdaterTest { }; saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), - version("3.0.0.RC1")); + version("3.0.0.RC1"), projects); then(this.saganClient).should(BDDMockito.never()) .patchProject(BDDMockito.any(Project.class)); @@ -160,7 +163,7 @@ public class SaganUpdaterTest { }; saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), - version("3.0.0.RC1")); + version("3.0.0.RC1"), projects); then(this.saganClient).should().patchProject( BDDMockito.argThat(argument -> "new text".equals(argument.rawOverview))); @@ -182,7 +185,7 @@ public class SaganUpdaterTest { }; saganUpdater.updateSagan(new File("."), "master", version("3.0.0.RC1"), - version("3.0.0.RC1")); + version("3.0.0.RC1"), projects); then(this.saganClient).should().patchProject(BDDMockito .argThat(argument -> "new text".equals(argument.rawBootConfig))); @@ -200,46 +203,46 @@ public class SaganUpdaterTest { @Test public void should_update_sagan_from_master() { - ProjectVersion projectVersion = version("1.0.0.BUILD-SNAPSHOT"); + ProjectVersion projectVersion = version("2.2.0.BUILD-SNAPSHOT"); this.saganUpdater.updateSagan(new File("."), "master", projectVersion, - projectVersion); + projectVersion, projects); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.0.0.BUILD-SNAPSHOT", + BDDMockito.argThat(withReleaseUpdate("2.2.0.BUILD-SNAPSHOT", "https://cloud.spring.io/foo/reference/html/", "SNAPSHOT"))); } @Test public void should_update_sagan_from_release_version() { - ProjectVersion projectVersion = version("1.0.0.RELEASE"); + ProjectVersion projectVersion = version("2.2.0.RELEASE"); this.saganUpdater.updateSagan(new File("."), "master", projectVersion, - projectVersion); + projectVersion, projects); - then(this.saganClient).should().deleteRelease("foo", "1.0.0.RC1"); - then(this.saganClient).should().deleteRelease("foo", "1.0.0.BUILD-SNAPSHOT"); + then(this.saganClient).should().deleteRelease("foo", "2.2.0.RC1"); + then(this.saganClient).should().deleteRelease("foo", "2.2.0.BUILD-SNAPSHOT"); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.0.0.RELEASE", + BDDMockito.argThat(withReleaseUpdate("2.2.0.RELEASE", "https://cloud.spring.io/spring-cloud-static/foo/{version}/reference/html/", "GENERAL_AVAILABILITY"))); - then(this.saganClient).should().deleteRelease("foo", "1.0.0.BUILD-SNAPSHOT"); + then(this.saganClient).should().deleteRelease("foo", "2.2.0.BUILD-SNAPSHOT"); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.0.1.BUILD-SNAPSHOT", + BDDMockito.argThat(withReleaseUpdate("2.2.1.BUILD-SNAPSHOT", "https://cloud.spring.io/foo/reference/html/", "SNAPSHOT"))); } @Test public void should_update_sagan_from_non_master() { - ProjectVersion projectVersion = version("1.1.0.BUILD-SNAPSHOT"); + ProjectVersion projectVersion = version("2.3.0.BUILD-SNAPSHOT"); - this.saganUpdater.updateSagan(new File("."), "1.1.x", projectVersion, - projectVersion); + this.saganUpdater.updateSagan(new File("."), "2.3.x", projectVersion, + projectVersion, projects); then(this.saganClient).should(never()).deleteRelease(anyString(), anyString()); then(this.saganClient).should().updateRelease(BDDMockito.eq("foo"), - BDDMockito.argThat(withReleaseUpdate("1.1.0.BUILD-SNAPSHOT", - "https://cloud.spring.io/foo/1.1.x/reference/html/", + BDDMockito.argThat(withReleaseUpdate("2.3.0.BUILD-SNAPSHOT", + "https://cloud.spring.io/foo/2.3.x/reference/html/", "SNAPSHOT"))); } diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Args.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Args.java index 4cd5e6aa..1c89f831 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Args.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Args.java @@ -46,7 +46,7 @@ class Args { final ProjectVersion originalVersion; - final ProjectVersion versionFromScRelease; + final ProjectVersion versionFromBom; final ReleaserProperties properties; @@ -59,31 +59,31 @@ class Args { final ApplicationEventPublisher applicationEventPublisher; Args(Releaser releaser, File project, Projects projects, - ProjectVersion originalVersion, ProjectVersion versionFromScRelease, + ProjectVersion originalVersion, ProjectVersion versionFromBom, ReleaserProperties properties, boolean interactive, TaskType taskType, ApplicationEventPublisher applicationEventPublisher) { this.releaser = releaser; this.project = project; this.projects = projects; this.originalVersion = originalVersion; - this.versionFromScRelease = versionFromScRelease; + this.versionFromBom = versionFromBom; this.properties = properties; this.processedProjects = Collections - .singletonList(new ProcessedProject(properties, versionFromScRelease)); + .singletonList(new ProcessedProject(properties, versionFromBom)); this.interactive = interactive; this.taskType = taskType; this.applicationEventPublisher = applicationEventPublisher; } // Used by meta-release task - Args(Releaser releaser, Projects projects, ProjectVersion versionFromScRelease, + Args(Releaser releaser, Projects projects, ProjectVersion versionFromBom, ReleaserProperties properties, List processedProjects, boolean interactive, ApplicationEventPublisher applicationEventPublisher) { this.releaser = releaser; this.project = null; this.projects = projects; this.originalVersion = null; - this.versionFromScRelease = versionFromScRelease; + this.versionFromBom = versionFromBom; this.properties = properties; this.processedProjects = processedProjects; this.interactive = interactive; @@ -97,7 +97,7 @@ class Args { this.project = null; this.projects = null; this.originalVersion = null; - this.versionFromScRelease = null; + this.versionFromBom = null; this.properties = null; this.processedProjects = Collections.emptyList(); this.interactive = false; @@ -121,7 +121,7 @@ class Args { public String toString() { return "Args{" + "releaser=" + this.releaser + ", project=" + this.project + ", projects=" + this.projects + ", originalVersion=" - + this.originalVersion + ", versionFromBom=" + this.versionFromScRelease + + this.originalVersion + ", versionFromBom=" + this.versionFromBom + ", properties=" + this.properties + ", interactive=" + this.interactive + ", taskType=" + this.taskType + '}'; } diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsProcessor.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsProcessor.java index 8352eb2b..d608c1f0 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsProcessor.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsProcessor.java @@ -275,9 +275,8 @@ class OptionsProcessor { private Args args(Args defaultArgs, boolean interactive) { return new Args(this.releaser, defaultArgs.project, defaultArgs.projects, - defaultArgs.originalVersion, defaultArgs.versionFromScRelease, - this.properties, interactive, defaultArgs.taskType, - this.applicationEventPublisher); + defaultArgs.originalVersion, defaultArgs.versionFromBom, this.properties, + interactive, defaultArgs.taskType, this.applicationEventPublisher); } String chosenOption() { diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java index fe3b08f3..2a3b2e60 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java @@ -36,54 +36,52 @@ final class Tasks { static Task UPDATING_POMS = task("updatePoms", "u", "UPDATING VERSIONS", "Update versions from the BOM", args -> args.releaser.updateProjectFromBom(args.project, args.projects, - args.versionFromScRelease)); + args.versionFromBom)); static Task BUILD_PROJECT = task("build", "b", "BUILD PROJECT", "Build the project", - args -> args.releaser.buildProject(args.versionFromScRelease)); + args -> args.releaser.buildProject(args.versionFromBom)); static Task COMMIT = task("commit", "c", "COMMITTING (ALL) AND PUSHING TAGS (NON-SNAPSHOTS)", - "Commit, tag and push the tag", args -> args.releaser - .commitAndPushTags(args.project, args.versionFromScRelease)); + "Commit, tag and push the tag", + args -> args.releaser.commitAndPushTags(args.project, args.versionFromBom)); static Task DEPLOY = task("deploy", "d", "ARTIFACT DEPLOYMENT", - "Deploy the artifacts", - args -> args.releaser.deploy(args.versionFromScRelease)); + "Deploy the artifacts", args -> args.releaser.deploy(args.versionFromBom)); static Task PUBLISH_DOCS = task("docs", "o", "PUBLISHING DOCS", "Publish the docs", - args -> args.releaser.publishDocs(args.versionFromScRelease)); + args -> args.releaser.publishDocs(args.versionFromBom)); static Task SNAPSHOTS = task("snapshots", "s", "REVERTING CHANGES & BUMPING VERSION (RELEASE ONLY)", "Go back to snapshots and bump originalVersion by patch", args -> args.releaser.rollbackReleaseVersion(args.project, args.projects, - args.versionFromScRelease)); + args.versionFromBom)); static Task PUSH = task("push", "p", "PUSHING CHANGES", "Push the commits", args -> args.releaser.pushCurrentBranch(args.project)); static Task CLOSE_MILESTONE = task("closeMilestone", "m", "CLOSING MILESTONE", "Close the milestone at Github", - args -> args.releaser.closeMilestone(args.versionFromScRelease)); + args -> args.releaser.closeMilestone(args.versionFromBom)); static Task CREATE_TEMPLATES = task("createTemplates", "t", "CREATING TEMPLATES", "Create email / blog / tweet etc. templates", args -> { - args.releaser.createEmail(args.versionFromScRelease, args.projects); - args.releaser.createBlog(args.versionFromScRelease, args.projects); - args.releaser.createTweet(args.versionFromScRelease, args.projects); - args.releaser.createReleaseNotes(args.versionFromScRelease, - args.projects); + args.releaser.createEmail(args.versionFromBom, args.projects); + args.releaser.createBlog(args.versionFromBom, args.projects); + args.releaser.createTweet(args.versionFromBom, args.projects); + args.releaser.createReleaseNotes(args.versionFromBom, args.projects); }, TaskType.POST_RELEASE); static Task UPDATE_GUIDES = task("updateGuides", "ug", "UPDATE GUIDES", "Updating Spring Guides", args -> { - args.releaser.updateSpringGuides(args.versionFromScRelease, args.projects, + args.releaser.updateSpringGuides(args.versionFromBom, args.projects, args.processedProjects); }, TaskType.POST_RELEASE); static Task UPDATE_START_SPRING_IO = task("updateStartSpringIo", "us", "UPDATE START.SPRING.IO", "Updating start.spring.io", args -> { - args.releaser.updateStartSpringIo(args.versionFromScRelease, - args.projects); + args.releaser.updateStartSpringIo(args.versionFromBom, args.projects); }, TaskType.POST_RELEASE); static Task UPDATE_SAGAN = task("updateSagan", "g", "UPDATE SAGAN", "Updating Sagan with release info", args -> { - args.releaser.updateSagan(args.project, args.versionFromScRelease); + args.releaser.updateSagan(args.project, args.versionFromBom, + args.projects); }); static Task UPDATE_DOCUMENTATION = task("updateDocumentation", "ud", "UPDATE DOCUMENTATION", "Updating documentation repository", args -> { args.releaser.updateDocumentationRepository(args.properties, - args.projects, args.versionFromScRelease); + args.projects, args.versionFromBom); }, TaskType.POST_RELEASE); static Task RUN_UPDATED_SAMPLES = task("runUpdatedSample", "ru", diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java index 32aa547c..23369833 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java @@ -345,7 +345,7 @@ public class AcceptanceTests { BDDMockito.then(this.saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan( BDDMockito.any(File.class), BDDMockito.anyString(), BDDMockito.any(ProjectVersion.class), - BDDMockito.any(ProjectVersion.class)); + BDDMockito.any(ProjectVersion.class), BDDMockito.any(Projects.class)); } private void thenSaganWasNotCalled() {