Added an option not to clone sc-release; fixes gh-82
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user