Fixed setting of docs url for old trains
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 + "/";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<List<ReleaseUpdate>> 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;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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")));
|
||||
}
|
||||
|
||||
|
||||
@@ -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<ProcessedProject> 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 + '}';
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user