Fixed wrong tagging

This commit is contained in:
Marcin Grzejszczak
2018-10-16 14:11:12 +02:00
parent 38d206149c
commit e407255565
5 changed files with 136 additions and 27 deletions

View File

@@ -37,6 +37,7 @@ public class DocumentationUpdater {
return null;
}
File documentationProject = this.gitHandler.cloneDocumentationProject();
log.debug("Cloning the doc project to [{}]", documentationProject);
String pathToIndexHtml = "current/index.html";
File indexHtml = new File(documentationProject, pathToIndexHtml);
if (!indexHtml.exists()) {

View File

@@ -60,4 +60,18 @@ class Args {
this.interactive = false;
this.taskType = taskType;
}
@Override
public String toString() {
return "Args{" +
"releaser=" + this.releaser +
", project=" + this.project +
", projects=" + this.projects +
", originalVersion=" + this.originalVersion +
", versionFromScRelease=" + this.versionFromScRelease +
", properties=" + this.properties +
", interactive=" + this.interactive +
", taskType=" + this.taskType +
'}';
}
}

View File

@@ -160,7 +160,7 @@ public class SpringReleaser {
} else {
ProjectVersion originalVersion = new ProjectVersion(project);
String fixedVersionForProject = this.properties.getFixedVersions()
.get(this.properties.getMetaRelease().getReleaseTrainProjectName());
.get(project.getName());
versionFromScRelease = StringUtils.hasText(fixedVersionForProject) ?
new ProjectVersion(originalVersion.projectName, fixedVersionForProject) :
new ProjectVersion(project);
@@ -189,6 +189,7 @@ public class SpringReleaser {
final Args defaultArgs = new Args(this.releaser, project, projectsAndVersion.projectVersions,
originalVersion, projectsAndVersion.versionFromScRelease, this.properties,
options.interactive, taskType);
log.debug("Processing project [{}] with args [{}]", project, defaultArgs);
this.optionsProcessor.processOptions(options, defaultArgs);
return projectsAndVersion;
}

View File

@@ -0,0 +1,40 @@
package org.springframework.cloud.release.internal.docs;
import java.io.File;
import java.io.IOException;
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
/**
* @author Marcin Grzejszczak
*/
public class TestDocumentationUpdater extends DocumentationUpdater {
private final String version;
public TestDocumentationUpdater(ProjectGitHandler gitHandler, String version) {
super(gitHandler);
this.version = version;
}
@Override
String readIndexHtmlContents(File indexHtml) throws IOException {
return response();
}
private String response() {
return "<!DOCTYPE HTML>\n"
+ "\n"
+ "<meta charset=\"UTF-8\">\n"
+ "<meta http-equiv=\"refresh\" content=\"1; url=http://cloud.spring.io/spring-cloud-static/" + this.version + "/\">\n"
+ "\n"
+ "<script>\n"
+ " window.location.href = \"http://cloud.spring.io/spring-cloud-static/" + this.version + "/\"\n"
+ "</script>\n"
+ "\n"
+ "<title>Page Redirection</title>\n"
+ "\n"
+ "<!-- Note: don't tell people to `click` the link, just tell them that it is a link. -->\n"
+ "If you are not redirected automatically, follow the <a href='http://cloud.spring.io/spring-cloud-static/" + this.version + "/'>link to latest release</a>\n";
}
}

View File

@@ -9,20 +9,20 @@ import java.net.URISyntaxException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.swing.*;
import org.apache.maven.model.Model;
import org.assertj.core.api.BDDAssertions;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -32,6 +32,7 @@ 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.docs.DocumentationUpdater;
import org.springframework.cloud.release.internal.docs.TestDocumentationUpdater;
import org.springframework.cloud.release.internal.git.GitTestUtils;
import org.springframework.cloud.release.internal.git.ProjectGitHandler;
import org.springframework.cloud.release.internal.gradle.GradleUpdater;
@@ -193,24 +194,66 @@ public class AcceptanceTests {
@Test
public void should_perform_a_meta_release_of_sc_release_and_consul() throws Exception {
// simulates an org
Map<String, String> versions = new HashMap<>();
versions.put("spring-cloud-release", "Camden.BUILD-SNAPSHOT");
versions.put("spring-cloud-consul", "1.1.2.BUILD-SNAPSHOT");
SpringReleaser releaser = metaReleaser(versions);
SpringReleaser releaser = metaReleaser(edgwareSr5());
releaser.release(new OptionsBuilder().metaRelease(true).options());
then(this.nonAssertingGitHandler.clonedProjects).hasSize(2);
// consul, release, documentation
then(this.nonAssertingGitHandler.clonedProjects).hasSize(3);
// don't want to verify the docs
thenAllStepsWereExecutedForEachProject();
thenSaganWasCalled();
thenDocumentationWasUpdated();
BDDAssertions.then(clonedProject("spring-cloud-consul").tagList().call())
.extracting("name").contains("refs/tags/v1.3.5.RELEASE");
}
private Map<String, String> edgwareSr5() {
Map<String, String> versions = new LinkedHashMap<>();
versions.put("spring-boot", "1.5.16.RELEASE");
versions.put("spring-cloud-build", "1.3.11.RELEASE");
versions.put("spring-cloud-commons", "1.3.5.RELEASE");
versions.put("spring-cloud-stream", "Ditmars.SR4");
versions.put("spring-cloud-task", "1.2.3.RELEASE");
versions.put("spring-cloud-function", "1.0.1.RELEASE");
versions.put("spring-cloud-aws", "1.2.3.RELEASE");
versions.put("spring-cloud-bus", "1.3.4.RELEASE");
versions.put("spring-cloud-config", "1.4.5.RELEASE");
versions.put("spring-cloud-netflix", "1.4.6.RELEASE");
versions.put("spring-cloud-cloudfoundry", "1.1.2.RELEASE");
versions.put("spring-cloud-gateway", "1.0.2.RELEASE");
versions.put("spring-cloud-security", "1.2.3.RELEASE");
versions.put("spring-cloud-consul", "1.3.5.RELEASE");
versions.put("spring-cloud-zookeeper", "1.2.2.RELEASE");
versions.put("spring-cloud-sleuth", "1.3.5.RELEASE");
versions.put("spring-cloud-contract", "1.2.6.RELEASE");
versions.put("spring-cloud-vault", "1.1.2.RELEASE");
versions.put("spring-cloud-release", "Edgware.SR5");
return versions;
}
private Git clonedProject(String name) {
return GitTestUtils
.openGitProject(this.nonAssertingGitHandler.clonedProjects.stream()
.filter(file -> file.getName().contains(name))
.findFirst().get());
}
private void thenSaganWasCalled() {
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce())
.updateSagan(BDDMockito.anyString(),
BDDMockito.any(ProjectVersion.class), BDDMockito
.any(ProjectVersion.class));
}
private void thenAllStepsWereExecutedForEachProject() {
this.nonAssertingGitHandler.clonedProjects
.stream().filter(f -> !f.getName().contains("angel"))
.forEach(project -> {
then(Arrays.asList("spring-cloud-starter-build",
"spring-cloud-consul")).contains(pom(project).getArtifactId());
then(capture.toString()).contains("executed_build", "executed_deploy", "executed_docs");
});
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan(BDDMockito.anyString(),
BDDMockito.any(ProjectVersion.class), BDDMockito.any(ProjectVersion.class));
BDDMockito.then(documentationUpdater).should()
.updateDocsRepo(BDDMockito.any(ProjectVersion.class), BDDMockito.anyString());
}
@Test
@@ -248,14 +291,12 @@ public class AcceptanceTests {
then(pom(project).getArtifactId()).isEqualTo("spring-cloud-consul");
then(capture.toString()).contains("executed_build", "executed_deploy", "executed_docs");
});
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan(BDDMockito.anyString(),
BDDMockito.any(ProjectVersion.class), BDDMockito.any(ProjectVersion.class));
BDDMockito.then(documentationUpdater).should()
.updateDocsRepo(BDDMockito.any(ProjectVersion.class), BDDMockito.anyString());
thenSaganWasCalled();
thenDocumentationWasUpdated();
}
@Test
public void should_perform_a_meta_release_of_build_and_consul_only_when_task_names_got_passed() throws Exception {
public void should_perform_a_meta_release_of_consul_only_when_task_names_got_passed() throws Exception {
// simulates an org
Map<String, String> versions = new HashMap<>();
versions.put("spring-cloud-release", "Camden.BUILD-SNAPSHOT");
@@ -264,20 +305,25 @@ public class AcceptanceTests {
SpringReleaser releaser = metaReleaser(versions);
releaser.release(new OptionsBuilder().metaRelease(true)
.taskNames(Arrays.asList("spring-cloud-build", "spring-cloud-consul"))
.taskNames(Collections.singletonList("spring-cloud-consul"))
.options());
then(this.nonAssertingGitHandler.clonedProjects).hasSize(2);
then(this.nonAssertingGitHandler.clonedProjects).hasSize(1);
this.nonAssertingGitHandler.clonedProjects
.forEach(project -> {
then(Arrays.asList("spring-cloud-build",
"spring-cloud-consul")).contains(pom(project).getArtifactId());
then(capture.toString()).contains("executed_build", "executed_deploy", "executed_docs");
then(Collections.singletonList("spring-cloud-consul"))
.contains(pom(project).getArtifactId());
then(capture.toString()).contains("executed_build", "executed_deploy",
"executed_docs");
});
BDDMockito.then(saganUpdater).should(BDDMockito.atLeastOnce()).updateSagan(BDDMockito.anyString(),
BDDMockito.any(ProjectVersion.class), BDDMockito.any(ProjectVersion.class));
thenSaganWasCalled();
thenDocumentationWasUpdated();
}
private void thenDocumentationWasUpdated() {
BDDMockito.then(documentationUpdater).should()
.updateDocsRepo(BDDMockito.any(ProjectVersion.class), BDDMockito.anyString());
.updateDocsRepo(BDDMockito.any(ProjectVersion.class), BDDMockito
.anyString());
}
// issue #74
@@ -546,7 +592,7 @@ public class AcceptanceTests {
TemplateGenerator templateGenerator = new TemplateGenerator(properties, handler);
GradleUpdater gradleUpdater = new GradleUpdater(properties);
SaganUpdater saganUpdater = new SaganUpdater(this.saganClient);
DocumentationUpdater documentationUpdater = new DocumentationUpdater(handler) {
DocumentationUpdater documentationUpdater = new TestDocumentationUpdater(handler, "Brixton.SR1") {
@Override public File updateDocsRepo(ProjectVersion currentProject,
String springCloudReleaseBranch) {
File file = super.updateDocsRepo(currentProject, springCloudReleaseBranch);
@@ -599,6 +645,13 @@ public class AcceptanceTests {
private ReleaserProperties metaReleaserProperties(Map<String, String> versions) throws URISyntaxException {
ReleaserProperties releaserProperties = new ReleaserProperties();
Arrays.asList("spring-cloud-build", "spring-cloud-commons", "spring-cloud-stream",
"spring-cloud-task", "spring-cloud-function", "spring-cloud-aws",
"spring-cloud-bus", "spring-cloud-config", "spring-cloud-netflix",
"spring-cloud-cloudfoundry", "spring-cloud-gateway", "spring-cloud-security",
"spring-cloud-zookeeper", "spring-cloud-sleuth",
"spring-cloud-contract", "spring-cloud-vault")
.forEach(s -> releaserProperties.getMetaRelease().getProjectsToSkip().add(s));
releaserProperties.getGit().setDocumentationUrl(file("/projects/spring-cloud-static-angel/").toURI().toString());
releaserProperties.getMaven().setBuildCommand("echo executed_build");
releaserProperties.getMaven().setDeployCommand("echo executed_deploy");