Use Spring Data BOM's GitHub Release as Release Notes Link aggregator.
Closes #10
This commit is contained in:
@@ -19,6 +19,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -35,6 +36,7 @@ import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
import org.springframework.data.release.git.GitProject;
|
||||
import org.springframework.data.release.git.GitServer;
|
||||
import org.springframework.data.release.git.Tag;
|
||||
import org.springframework.data.release.git.VersionTags;
|
||||
import org.springframework.data.release.issues.Changelog;
|
||||
@@ -92,7 +94,6 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
private final Logger logger;
|
||||
private final GitHubProperties properties;
|
||||
|
||||
|
||||
public GitHub(@Qualifier("tracker") RestTemplateBuilder templateBuilder, Logger logger, GitHubProperties properties) {
|
||||
|
||||
super(createOperations(templateBuilder, properties));
|
||||
@@ -369,8 +370,8 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
|
||||
GitHubWriteIssue edit = GitHubWriteIssue.assignedTo(properties.getUsername()).close();
|
||||
|
||||
return operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.PATCH,
|
||||
new HttpEntity<>(edit, new HttpHeaders()), ISSUE_TYPE, parameters).getBody();
|
||||
return operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.PATCH, new HttpEntity<>(edit, new HttpHeaders()),
|
||||
ISSUE_TYPE, parameters).getBody();
|
||||
}
|
||||
|
||||
private String stripHash(Ticket ticket) {
|
||||
@@ -400,8 +401,8 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
|
||||
logger.log(moduleIteration, "Looking up milestone…");
|
||||
|
||||
doWithPaging(MILESTONE_URI, HttpMethod.GET, parameters, new HttpEntity<>(new HttpHeaders()),
|
||||
MILESTONES_TYPE, milestones -> {
|
||||
doWithPaging(MILESTONE_URI, HttpMethod.GET, parameters, new HttpEntity<>(new HttpHeaders()), MILESTONES_TYPE,
|
||||
milestones -> {
|
||||
|
||||
Optional<Milestone> milestone = milestones.stream(). //
|
||||
filter(milestonePredicate). //
|
||||
@@ -503,8 +504,7 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
return gitHubIssues;
|
||||
}
|
||||
|
||||
private GitHubReadIssue getTicket(Map<String, GitHubReadIssue> cache, String repositoryName,
|
||||
String ticketId) {
|
||||
private GitHubReadIssue getTicket(Map<String, GitHubReadIssue> cache, String repositoryName, String ticketId) {
|
||||
|
||||
if (cache.containsKey(ticketId)) {
|
||||
return cache.get(ticketId);
|
||||
@@ -533,8 +533,8 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
|
||||
try {
|
||||
|
||||
return operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.GET,
|
||||
new HttpEntity<>(new HttpHeaders()), ISSUE_TYPE, parameters).getBody();
|
||||
return operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.GET, new HttpEntity<>(new HttpHeaders()),
|
||||
ISSUE_TYPE, parameters).getBody();
|
||||
} catch (HttpStatusCodeException e) {
|
||||
|
||||
if (e.getStatusCode() == HttpStatus.NOT_FOUND) {
|
||||
@@ -546,10 +546,11 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param module
|
||||
* @param ticketReferences
|
||||
* @param iteration
|
||||
* @param module
|
||||
*/
|
||||
public void createOrUpdateRelease(ModuleIteration module, List<String> ticketIds) {
|
||||
public void createOrUpdateRelease(TrainIteration iteration, ModuleIteration module, List<String> ticketIds) {
|
||||
|
||||
logger.log(module, "Preparing GitHub Release …");
|
||||
|
||||
@@ -566,7 +567,15 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
|
||||
if (module.getProject() == Projects.BOM || module.getProject() == Projects.BUILD) {
|
||||
// We don't ship Javadoc/reference doc for build and BOM
|
||||
createOrUpdateRelease(module, String.format("%s%n", documentationLinks, releaseBody));
|
||||
|
||||
if (module.getProject() == Projects.BOM) {
|
||||
String participatingModules = createParticipatingModules(iteration);
|
||||
|
||||
createOrUpdateRelease(module,
|
||||
String.format("## :shipit: Participating Modules%n%n%s%n%s%n", participatingModules, releaseBody));
|
||||
} else {
|
||||
createOrUpdateRelease(module, String.format("%s%n", documentationLinks, releaseBody));
|
||||
}
|
||||
} else {
|
||||
createOrUpdateRelease(module, String.format("## :green_book: Links%n%s%n%s%n", documentationLinks, releaseBody));
|
||||
}
|
||||
@@ -574,6 +583,18 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
logger.log(module, "GitHub Release up to date");
|
||||
}
|
||||
|
||||
private String createParticipatingModules(TrainIteration iteration) {
|
||||
|
||||
Comparator<ModuleIteration> comparator = Comparator
|
||||
.comparing(moduleIteration -> moduleIteration.getProject().getName());
|
||||
return iteration.stream().sorted(comparator).map(module -> {
|
||||
|
||||
Tag tag = VersionTags.empty(module.getProject()).createTag(module);
|
||||
return String.format("* [Spring Data %s %s](%s%s/releases/tag/%s)%n", module.getProject().getName(),
|
||||
tag.getName(), GitServer.INSTANCE.getUri(), module.getProject().getFolderName(), tag.getName());
|
||||
}).collect(Collectors.joining());
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify GitHub authentication.
|
||||
*/
|
||||
@@ -702,11 +723,10 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
private Stream<GitHubReadIssue> getForIssues(String template, Map<String, Object> parameters) {
|
||||
|
||||
List<GitHubReadIssue> issues = new ArrayList<>();
|
||||
doWithPaging(template, HttpMethod.GET, parameters, new HttpEntity<>(new HttpHeaders()), ISSUES_TYPE,
|
||||
tickets -> {
|
||||
issues.addAll(tickets);
|
||||
return true;
|
||||
});
|
||||
doWithPaging(template, HttpMethod.GET, parameters, new HttpEntity<>(new HttpHeaders()), ISSUES_TYPE, tickets -> {
|
||||
issues.addAll(tickets);
|
||||
return true;
|
||||
});
|
||||
|
||||
return issues.stream();
|
||||
}
|
||||
@@ -715,8 +735,7 @@ public class GitHub extends GitHubSupport implements IssueTracker {
|
||||
|
||||
Optional<Milestone> milestone = findMilestone(moduleIteration, repositoryName);
|
||||
|
||||
return milestone
|
||||
.orElseThrow(() -> noSuchMilestone(moduleIteration));
|
||||
return milestone.orElseThrow(() -> noSuchMilestone(moduleIteration));
|
||||
}
|
||||
|
||||
private IllegalStateException noSuchMilestone(ModuleIteration moduleIteration) {
|
||||
|
||||
@@ -79,7 +79,7 @@ public class GitHubCommands extends TimedCommand {
|
||||
|
||||
List<String> ticketReferences = git.getTicketReferencesBetween(it.getProject(), previousIteration, iteration)
|
||||
.stream().map(TicketReference::getId).collect(Collectors.toList());
|
||||
gitHub.createOrUpdateRelease(it, ticketReferences);
|
||||
gitHub.createOrUpdateRelease(iteration, it, ticketReferences);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user