From ebadf0a5eaeab2bccc84543b40e33a30e10bb41d Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 12 Jan 2021 14:05:25 +0100 Subject: [PATCH] Update issue tracker settings for projects after Jira to GitHub migration. Closes #166 --- .../data/release/GitHubMigration.java | 27 ---------------- .../data/release/git/Commit.java | 25 +++------------ .../data/release/git/GitCommands.java | 3 +- .../data/release/issues/Ticket.java | 2 +- .../data/release/issues/jira/Jira.java | 5 ++- .../data/release/misc/ReleaseOperations.java | 25 +++++---------- .../data/release/model/Project.java | 10 ------ .../data/release/model/Projects.java | 32 +++++++++---------- .../data/release/git/CommitUnitTests.java | 4 +-- 9 files changed, 35 insertions(+), 98 deletions(-) delete mode 100644 release-tools/src/main/java/org/springframework/data/release/GitHubMigration.java diff --git a/release-tools/src/main/java/org/springframework/data/release/GitHubMigration.java b/release-tools/src/main/java/org/springframework/data/release/GitHubMigration.java deleted file mode 100644 index ea0b5f2..0000000 --- a/release-tools/src/main/java/org/springframework/data/release/GitHubMigration.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.release; - -/** - * @author Mark Paluch - */ -public enum GitHubMigration { - - ; - - // TODO: Flip this switch once the GitHub migration is done. - public static final boolean isDone = false; -} diff --git a/release-tools/src/main/java/org/springframework/data/release/git/Commit.java b/release-tools/src/main/java/org/springframework/data/release/git/Commit.java index 1eed59e..401eaff 100644 --- a/release-tools/src/main/java/org/springframework/data/release/git/Commit.java +++ b/release-tools/src/main/java/org/springframework/data/release/git/Commit.java @@ -20,7 +20,6 @@ import lombok.RequiredArgsConstructor; import java.util.Optional; -import org.springframework.data.release.GitHubMigration; import org.springframework.data.release.issues.Ticket; /** @@ -43,27 +42,8 @@ public class Commit { StringBuilder builder = new StringBuilder(); - if (GitHubMigration.isDone) { - builder.append(summary); - - if (!summary.endsWith(".")) { - builder.append("."); - } - - details.ifPresent(it -> { - builder.append("\n"); - builder.append("\n"); - builder.append(it); - }); - - builder.append("\nSee ").append(ticket.getId()); - - return builder.toString(); - - } - - builder.append(ticket.getId()).append(" - ").append(summary); + builder.append(summary); if (!summary.endsWith(".")) { builder.append("."); @@ -75,6 +55,9 @@ public class Commit { builder.append(it); }); + builder.append("\n\nSee ").append(ticket.getId()); + return builder.toString(); + } } diff --git a/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java b/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java index a420990..52da633 100644 --- a/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java @@ -102,7 +102,8 @@ class GitCommands extends TimedCommand { private Tickets toTickets(List ticketRefs) { return new Tickets( - ticketRefs.stream().map(it -> new Ticket(it.getId(), it.getMessage(), "", null)).collect(Collectors.toList())); + ticketRefs.stream().map(it -> new Ticket(it.getId(), it.getMessage(), "", null, null)) + .collect(Collectors.toList())); } /** diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/Ticket.java b/release-tools/src/main/java/org/springframework/data/release/issues/Ticket.java index ed94cf1..4784933 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/Ticket.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/Ticket.java @@ -74,7 +74,7 @@ public class Ticket { public boolean isReleaseTicketFor(ModuleIteration module) { Assert.notNull(module, "Module must not be null!"); - return summary.equals(Tracker.releaseTicketSummary(module)); + return summary.startsWith(Tracker.releaseTicketSummary(module)); } /** diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java b/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java index d91da9f..5ed3ff9 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java @@ -40,7 +40,6 @@ import org.springframework.data.release.issues.jira.JiraIssue.StatusCategory; import org.springframework.data.release.model.ModuleIteration; import org.springframework.data.release.model.Project; import org.springframework.data.release.model.ProjectKey; -import org.springframework.data.release.model.Projects; import org.springframework.data.release.model.Tracker; import org.springframework.data.release.model.TrainIteration; import org.springframework.data.release.utils.Logger; @@ -232,7 +231,7 @@ class Jira implements JiraConnector { Optional versionsForModuleIteration = findJiraReleaseVersion(moduleIteration); - if (versionsForModuleIteration.isPresent() || moduleIteration.getProject() == Projects.GEMFIRE) { + if (versionsForModuleIteration.isPresent()) { return; } @@ -307,7 +306,7 @@ class Jira implements JiraConnector { Tickets tickets = getTicketsFor(moduleIteration); - if (tickets.hasReleaseTicket(moduleIteration) || moduleIteration.getProject() == Projects.GEMFIRE) { + if (tickets.hasReleaseTicket(moduleIteration)) { return; } diff --git a/release-tools/src/main/java/org/springframework/data/release/misc/ReleaseOperations.java b/release-tools/src/main/java/org/springframework/data/release/misc/ReleaseOperations.java index 919dcb8..48aceba 100644 --- a/release-tools/src/main/java/org/springframework/data/release/misc/ReleaseOperations.java +++ b/release-tools/src/main/java/org/springframework/data/release/misc/ReleaseOperations.java @@ -25,7 +25,6 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutorService; -import org.springframework.data.release.GitHubMigration; import org.springframework.data.release.git.GitOperations; import org.springframework.data.release.io.Workspace; import org.springframework.data.release.issues.Changelog; @@ -119,25 +118,17 @@ public class ReleaseOperations { protected Changelog getChangelog(TrainIteration iteration, TrainIteration previousIteration, ModuleIteration module, IssueTracker issueTracker) { - Changelog changelog; + List ticketReferences = git.getTicketReferencesBetween(module.getProject(), previousIteration, + iteration); - if (GitHubMigration.isDone) { + // TODO: Use only associated tracker + List tickets = new ArrayList<>(); - List ticketReferences = git.getTicketReferencesBetween(module.getProject(), previousIteration, - iteration); - - // TODO: Use only associated tracker - List tickets = new ArrayList<>(); - - for (IssueTracker tracker : trackers) { - tickets.addAll(tracker.findTickets(module, ticketReferences).getTickets()); - } - - changelog = Changelog.of(module, new Tickets(tickets)); - } else { - changelog = issueTracker.getChangelogFor(module); + for (IssueTracker tracker : trackers) { + tickets.addAll(tracker.findTickets(module, ticketReferences).getTickets()); } - return changelog; + + return Changelog.of(module, new Tickets(tickets)); } public void updateResources(TrainIteration iteration) { diff --git a/release-tools/src/main/java/org/springframework/data/release/model/Project.java b/release-tools/src/main/java/org/springframework/data/release/model/Project.java index 897845e..3eacc53 100644 --- a/release-tools/src/main/java/org/springframework/data/release/model/Project.java +++ b/release-tools/src/main/java/org/springframework/data/release/model/Project.java @@ -28,7 +28,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.springframework.data.release.GitHubMigration; import org.springframework.util.Assert; /** @@ -46,10 +45,6 @@ public class Project implements Comparable { private final @With ArtifactCoordinates additionalArtifacts; private final @With boolean skipTests; - Project(String key, String name) { - this(key, name, null, Tracker.JIRA); - } - Project(String key, String name, Tracker tracker) { this(key, name, null, tracker); } @@ -63,11 +58,6 @@ public class Project implements Comparable { private Project(ProjectKey key, String name, String fullName, Collection dependencies, Tracker tracker, ArtifactCoordinates additionalArtifacts, boolean skipTests) { - if (GitHubMigration.isDone) { - if (tracker != Tracker.GITHUB) { - throw new IllegalStateException(String.format("Cannot have other trackers than GitHub (Project: %s)", name)); - } - } this.key = key; this.name = name; this.fullName = fullName; diff --git a/release-tools/src/main/java/org/springframework/data/release/model/Projects.java b/release-tools/src/main/java/org/springframework/data/release/model/Projects.java index 6cf3917..bd1710e 100644 --- a/release-tools/src/main/java/org/springframework/data/release/model/Projects.java +++ b/release-tools/src/main/java/org/springframework/data/release/model/Projects.java @@ -51,59 +51,59 @@ public class Projects { .artifacts("spring-data-build-parent", "spring-data-build-resources") .and(ArtifactCoordinate.of("org.springframework.data", "spring-data-releasetrain"))); - COMMONS = new Project("DATACMNS", "Commons").withDependencies(BUILD); + COMMONS = new Project("DATACMNS", "Commons", Tracker.GITHUB).withDependencies(BUILD); - JPA = new Project("DATAJPA", "JPA").withDependencies(COMMONS); + JPA = new Project("DATAJPA", "JPA", Tracker.GITHUB).withDependencies(COMMONS); - MONGO_DB = new Project("DATAMONGO", "MongoDB") // + MONGO_DB = new Project("DATAMONGO", "MongoDB", Tracker.GITHUB) // .withDependencies(COMMONS) // .withAdditionalArtifacts( ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-mongodb-cross-store", "spring-data-mongodb-log4j")); - NEO4J = new Project("DATAGRAPH", "Neo4j").withDependencies(COMMONS); + NEO4J = new Project("DATAGRAPH", "Neo4j", Tracker.GITHUB).withDependencies(COMMONS); - SOLR = new Project("DATASOLR", "Solr") // + SOLR = new Project("DATASOLR", "Solr", Tracker.GITHUB) // .withDependencies(COMMONS) // .withFullName("Spring Data for Apache Solr"); - COUCHBASE = new Project("DATACOUCH", "Couchbase").withDependencies(COMMONS); + COUCHBASE = new Project("DATACOUCH", "Couchbase", Tracker.GITHUB).withDependencies(COMMONS); - CASSANDRA = new Project("DATACASS", "Cassandra") // + CASSANDRA = new Project("DATACASS", "Cassandra", Tracker.GITHUB) // .withDependencies(COMMONS) // .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-cql")) .withFullName("Spring Data for Apache Cassandra"); - ELASTICSEARCH = new Project("DATAES", "Elasticsearch").withDependencies(COMMONS); + ELASTICSEARCH = new Project("DATAES", "Elasticsearch", Tracker.GITHUB).withDependencies(COMMONS); - KEY_VALUE = new Project("DATAKV", "KeyValue").withDependencies(COMMONS); + KEY_VALUE = new Project("DATAKV", "KeyValue", Tracker.GITHUB).withDependencies(COMMONS); - REDIS = new Project("DATAREDIS", "Redis").withDependencies(KEY_VALUE); + REDIS = new Project("DATAREDIS", "Redis", Tracker.GITHUB).withDependencies(KEY_VALUE); - JDBC = new Project("DATAJDBC", "JDBC") + JDBC = new Project("DATAJDBC", "JDBC", Tracker.GITHUB) .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-relational")) .withDependencies(COMMONS); R2DBC = new Project("DATAR2DBC", "R2DBC", Tracker.GITHUB).withDependencies(COMMONS, JDBC); - GEMFIRE = new Project("DATAGEODE", "Gemfire") // + GEMFIRE = new Project("DATAGEODE", "Gemfire", Tracker.JIRA) // .withDependencies(COMMONS)// .withSkipTests(true); - GEODE = new Project("DATAGEODE", "Geode") // + GEODE = new Project("DATAGEODE", "Geode", Tracker.GITHUB) // .withDependencies(COMMONS) // .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-gemfire")) .withFullName("Spring Data for Apache Geode") // .withSkipTests(true); - REST = new Project("DATAREST", "REST") // - .withDependencies(JPA, MONGO_DB, NEO4J, GEODE, SOLR, CASSANDRA, KEY_VALUE) // + REST = new Project("DATAREST", "REST", Tracker.GITHUB) // + .withDependencies(JPA, MONGO_DB, NEO4J, GEODE, CASSANDRA, KEY_VALUE) // .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA // .artifacts("spring-data-rest-core", "spring-data-rest-core", "spring-data-rest-hal-browser", "spring-data-rest-hal-explorer")); ENVERS = new Project("DATAENV", "Envers", Tracker.GITHUB).withDependencies(JPA); - LDAP = new Project("DATALDAP", "LDAP").withDependencies(COMMONS); + LDAP = new Project("DATALDAP", "LDAP", Tracker.GITHUB).withDependencies(COMMONS); // Specify build order to avoid maven dependency errors during build. List projects = Arrays.asList(BUILD, COMMONS, JPA, JDBC, MONGO_DB, NEO4J, SOLR, COUCHBASE, CASSANDRA, diff --git a/release-tools/src/test/java/org/springframework/data/release/git/CommitUnitTests.java b/release-tools/src/test/java/org/springframework/data/release/git/CommitUnitTests.java index 59f7a3b..1f7d356 100644 --- a/release-tools/src/test/java/org/springframework/data/release/git/CommitUnitTests.java +++ b/release-tools/src/test/java/org/springframework/data/release/git/CommitUnitTests.java @@ -34,7 +34,7 @@ class CommitUnitTests { void shouldRenderCommitMessage() { assertThat( - new Commit(new Ticket("1234", "Hello", null, Mockito.mock(TicketStatus.class)), "Summary", Optional.empty())) + new Commit(new Ticket("1234", "Hello", Mockito.mock(TicketStatus.class)), "Summary", Optional.empty())) .hasToString("1234 - Summary."); } @@ -42,7 +42,7 @@ class CommitUnitTests { void shouldRenderCommitMessageWithDetail() { assertThat( - new Commit(new Ticket("1234", "Hello", null, Mockito.mock(TicketStatus.class)), "Summary", + new Commit(new Ticket("1234", "Hello", Mockito.mock(TicketStatus.class)), "Summary", Optional.of("detail"))) .hasToString("1234 - Summary.\n" + "\n" + "detail"); }