Added an option not to clone sc-release; fixes gh-82
This commit is contained in:
@@ -214,6 +214,7 @@ $ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/
|
||||
|
||||
- `releaser.fixed-versions` - A String to String mapping of manually set versions. E.g. `"spring-cloud-cli" -> "1.0.0.RELEASE"` will set
|
||||
the `spring-cloud-cli.version` to `1.0.0.RELEASE` regardless of what was set in `spring-cloud-release` project. Example `--releaser.fixed-versions[spring-cloud-cli]=1.0.0.RELEASE`.
|
||||
- `releaser.git.fetch-versions-from-git` - If `true` then should fill the map of versions from Git. If `false` then picks fixed versions
|
||||
- `releaser.git.clone-destination-dir` - Where should the Spring Cloud Release repo get cloned to. If null defaults to a temporary directory
|
||||
- `releaser.git.spring-cloud-release-git-url` - URL to Spring Cloud Release Git repository. Defaults to `https://github.com/spring-cloud/spring-cloud-release`
|
||||
- `releaser.git.oauth-token` - GitHub OAuth token to be used to interact with GitHub repo.
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.springframework.cloud.release.internal.pom.ProjectPomUpdater;
|
||||
import org.springframework.cloud.release.internal.pom.ProjectVersion;
|
||||
import org.springframework.cloud.release.internal.pom.Projects;
|
||||
import org.springframework.cloud.release.internal.project.ProjectBuilder;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
@@ -119,6 +120,8 @@ public class Releaser {
|
||||
}
|
||||
|
||||
public void createEmail(ProjectVersion releaseVersion) {
|
||||
Assert.notNull(releaseVersion, "You must provide a release version for your project");
|
||||
Assert.notNull(releaseVersion.version, "You must provide a release version for your project");
|
||||
if (releaseVersion.isSnapshot()) {
|
||||
log.info("\nWon't create email template for a SNAPSHOT version");
|
||||
return;
|
||||
|
||||
@@ -59,6 +59,11 @@ public class ReleaserProperties {
|
||||
*/
|
||||
private String cloneDestinationDir;
|
||||
|
||||
/**
|
||||
* If {@code true} then should fill the map of versions from Git. If {@code false} then picks fixed versions
|
||||
*/
|
||||
private boolean fetchVersionsFromGit = true;
|
||||
|
||||
/**
|
||||
* GitHub OAuth token to be used to interact with GitHub repo
|
||||
*/
|
||||
@@ -127,6 +132,14 @@ public class ReleaserProperties {
|
||||
public void setNumberOfCheckedMilestones(Integer numberOfCheckedMilestones) {
|
||||
this.numberOfCheckedMilestones = numberOfCheckedMilestones;
|
||||
}
|
||||
|
||||
public boolean isFetchVersionsFromGit() {
|
||||
return this.fetchVersionsFromGit;
|
||||
}
|
||||
|
||||
public void setFetchVersionsFromGit(boolean fetchVersionsFromGit) {
|
||||
this.fetchVersionsFromGit = fetchVersionsFromGit;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Pom {
|
||||
|
||||
@@ -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