Added an option not to clone sc-release; fixes gh-82

This commit is contained in:
Marcin Grzejszczak
2018-05-10 16:29:44 +02:00
parent b39070f428
commit 311e28b33e
5 changed files with 63 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ package org.springframework.cloud.release.internal.spring;
import java.io.File;
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,6 +14,7 @@ import org.springframework.cloud.release.internal.options.Options;
import org.springframework.cloud.release.internal.options.OptionsBuilder;
import org.springframework.cloud.release.internal.pom.ProjectVersion;
import org.springframework.cloud.release.internal.pom.Projects;
import org.springframework.cloud.release.internal.sagan.Project;
/**
* Releaser that gets input from console
@@ -48,14 +50,25 @@ public class SpringReleaser {
}
public void release(Options options) {
printVersionRetrieval();
String workingDir = this.properties.getWorkingDir();
File project = new File(workingDir);
ProjectVersion originalVersion = new ProjectVersion(project);
Projects projectsFromScRelease = this.releaser.retrieveVersionsFromSCRelease();
ProjectVersion versionFromScRelease = projectsFromScRelease.forFile(project);
assertNoSnapshotsForANonSnapshotProject(projectsFromScRelease, versionFromScRelease);
final Args defaultArgs = new Args(this.releaser, project, projectsFromScRelease,
ProjectVersion versionFromScRelease;
Projects projectsToUpdate;
if (this.properties.getGit().isFetchVersionsFromGit()) {
printVersionRetrieval();
projectsToUpdate = this.releaser.retrieveVersionsFromSCRelease();
versionFromScRelease = projectsToUpdate.forFile(project);
assertNoSnapshotsForANonSnapshotProject(projectsToUpdate, versionFromScRelease);
} else {
String fixedVersionForProject = this.properties.getFixedVersions().get(originalVersion.projectName);
versionFromScRelease = new ProjectVersion(originalVersion.projectName, fixedVersionForProject);
projectsToUpdate = this.properties.getFixedVersions().entrySet().stream()
.map(entry -> new ProjectVersion(entry.getKey(), entry.getValue()))
.distinct().collect(Collectors.toCollection(Projects::new));
printSettingVersionFromFixedVersions(projectsToUpdate);
}
final Args defaultArgs = new Args(this.releaser, project, projectsToUpdate,
originalVersion, versionFromScRelease, this.properties, options.interactive);
this.optionsProcessor.processOptions(options, defaultArgs);
}
@@ -65,6 +78,11 @@ public class SpringReleaser {
+ " to retrieve all versions for the branch [{}]", this.properties.getPom().getBranch());
}
private void printSettingVersionFromFixedVersions(Projects projectsToUpdate) {
log.info("\n\n\n=== RETRIEVED VERSIONS ===\n\nWill use the fixed versions"
+ " of projects [{}]", projectsToUpdate);
}
private void assertNoSnapshotsForANonSnapshotProject(Projects projects,
ProjectVersion versionFromScRelease) {
if (!versionFromScRelease.isSnapshot() && projects.containsSnapshots()) {

View File

@@ -20,6 +20,7 @@ import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.mockito.BDDMockito;
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.git.GitTestUtils;
@@ -49,6 +50,7 @@ public class AcceptanceTests {
File temporaryFolder;
TestProjectGitHandler gitHandler;
SaganClient saganClient = Mockito.mock(SaganClient.class);
ReleaserProperties releaserProperties;
@Before
public void setup() throws Exception {
@@ -92,6 +94,25 @@ public class AcceptanceTests {
.hasMessageContaining("there is at least one SNAPSHOT library version in the Spring Cloud Release project");
}
@Test
public void should_not_clone_when_option_not_to_clone_was_switched_on() throws Exception {
File origin = GitTestUtils.clonedProject(this.tmp.newFolder(), this.springCloudConsulProject);
pomVersionIsEqualTo(origin, "1.2.0.BUILD-SNAPSHOT");
consulPomParentVersionIsEqualTo(origin, "1.2.0.BUILD-SNAPSHOT");
File project = GitTestUtils.clonedProject(this.tmp.newFolder(), tmpFile("spring-cloud-consul"));
GitTestUtils.setOriginOnProjectToTmp(origin, project);
SpringReleaser releaser = templateOnlyReleaser(project, "spring-cloud-consul",
"vCamden.SR5", "1.1.2.RELEASE");
this.releaserProperties.getGit().setFetchVersionsFromGit(false);
this.releaserProperties.getFixedVersions().put("spring-cloud-consul", "2.3.4.RELEASE");
File temporaryDestination = tmp.newFolder();
this.releaserProperties.getGit().setCloneDestinationDir(temporaryDestination.getAbsolutePath());
releaser.release();
then(temporaryDestination.list()).isEmpty();
}
@Test
public void should_perform_a_release_of_consul() throws Exception {
File origin = GitTestUtils.clonedProject(this.tmp.newFolder(), this.springCloudConsulProject);
@@ -384,12 +405,14 @@ public class AcceptanceTests {
releaserProperties.getMaven().setBuildCommand("echo build");
releaserProperties.getMaven().setDeployCommand("echo deploy");
releaserProperties.getMaven().setPublishDocsCommands(new String[] { "echo docs"} );
this.releaserProperties = releaserProperties;
return releaserProperties;
}
private ReleaserProperties snapshotScReleaseReleaserProperties(File project, String branch) throws URISyntaxException {
ReleaserProperties releaserProperties = releaserProperties(project, branch);
releaserProperties.getGit().setSpringCloudReleaseGitUrl(file("/projects/spring-cloud-release-with-snapshot/").toURI().getPath());
this.releaserProperties = releaserProperties;
return releaserProperties;
}