Update issue tracker settings for projects after Jira to GitHub migration.
Closes #166
This commit is contained in:
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -20,7 +20,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.data.release.GitHubMigration;
|
|
||||||
import org.springframework.data.release.issues.Ticket;
|
import org.springframework.data.release.issues.Ticket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,27 +42,8 @@ public class Commit {
|
|||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|
||||||
if (GitHubMigration.isDone) {
|
|
||||||
|
|
||||||
builder.append(summary);
|
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);
|
|
||||||
|
|
||||||
if (!summary.endsWith(".")) {
|
if (!summary.endsWith(".")) {
|
||||||
builder.append(".");
|
builder.append(".");
|
||||||
@@ -75,6 +55,9 @@ public class Commit {
|
|||||||
builder.append(it);
|
builder.append(it);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
builder.append("\n\nSee ").append(ticket.getId());
|
||||||
|
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,8 @@ class GitCommands extends TimedCommand {
|
|||||||
private Tickets toTickets(List<TicketReference> ticketRefs) {
|
private Tickets toTickets(List<TicketReference> ticketRefs) {
|
||||||
|
|
||||||
return new Tickets(
|
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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class Ticket {
|
|||||||
public boolean isReleaseTicketFor(ModuleIteration module) {
|
public boolean isReleaseTicketFor(ModuleIteration module) {
|
||||||
|
|
||||||
Assert.notNull(module, "Module must not be null!");
|
Assert.notNull(module, "Module must not be null!");
|
||||||
return summary.equals(Tracker.releaseTicketSummary(module));
|
return summary.startsWith(Tracker.releaseTicketSummary(module));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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.ModuleIteration;
|
||||||
import org.springframework.data.release.model.Project;
|
import org.springframework.data.release.model.Project;
|
||||||
import org.springframework.data.release.model.ProjectKey;
|
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.Tracker;
|
||||||
import org.springframework.data.release.model.TrainIteration;
|
import org.springframework.data.release.model.TrainIteration;
|
||||||
import org.springframework.data.release.utils.Logger;
|
import org.springframework.data.release.utils.Logger;
|
||||||
@@ -232,7 +231,7 @@ class Jira implements JiraConnector {
|
|||||||
|
|
||||||
Optional<JiraReleaseVersion> versionsForModuleIteration = findJiraReleaseVersion(moduleIteration);
|
Optional<JiraReleaseVersion> versionsForModuleIteration = findJiraReleaseVersion(moduleIteration);
|
||||||
|
|
||||||
if (versionsForModuleIteration.isPresent() || moduleIteration.getProject() == Projects.GEMFIRE) {
|
if (versionsForModuleIteration.isPresent()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,7 +306,7 @@ class Jira implements JiraConnector {
|
|||||||
|
|
||||||
Tickets tickets = getTicketsFor(moduleIteration);
|
Tickets tickets = getTicketsFor(moduleIteration);
|
||||||
|
|
||||||
if (tickets.hasReleaseTicket(moduleIteration) || moduleIteration.getProject() == Projects.GEMFIRE) {
|
if (tickets.hasReleaseTicket(moduleIteration)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.util.Optional;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
import org.springframework.data.release.GitHubMigration;
|
|
||||||
import org.springframework.data.release.git.GitOperations;
|
import org.springframework.data.release.git.GitOperations;
|
||||||
import org.springframework.data.release.io.Workspace;
|
import org.springframework.data.release.io.Workspace;
|
||||||
import org.springframework.data.release.issues.Changelog;
|
import org.springframework.data.release.issues.Changelog;
|
||||||
@@ -119,25 +118,17 @@ public class ReleaseOperations {
|
|||||||
protected Changelog getChangelog(TrainIteration iteration, TrainIteration previousIteration, ModuleIteration module,
|
protected Changelog getChangelog(TrainIteration iteration, TrainIteration previousIteration, ModuleIteration module,
|
||||||
IssueTracker issueTracker) {
|
IssueTracker issueTracker) {
|
||||||
|
|
||||||
Changelog changelog;
|
List<TicketReference> ticketReferences = git.getTicketReferencesBetween(module.getProject(), previousIteration,
|
||||||
|
iteration);
|
||||||
|
|
||||||
if (GitHubMigration.isDone) {
|
// TODO: Use only associated tracker
|
||||||
|
List<Ticket> tickets = new ArrayList<>();
|
||||||
|
|
||||||
List<TicketReference> ticketReferences = git.getTicketReferencesBetween(module.getProject(), previousIteration,
|
for (IssueTracker tracker : trackers) {
|
||||||
iteration);
|
tickets.addAll(tracker.findTickets(module, ticketReferences).getTickets());
|
||||||
|
|
||||||
// TODO: Use only associated tracker
|
|
||||||
List<Ticket> 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);
|
|
||||||
}
|
}
|
||||||
return changelog;
|
|
||||||
|
return Changelog.of(module, new Tickets(tickets));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateResources(TrainIteration iteration) {
|
public void updateResources(TrainIteration iteration) {
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.springframework.data.release.GitHubMigration;
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,10 +45,6 @@ public class Project implements Comparable<Project> {
|
|||||||
private final @With ArtifactCoordinates additionalArtifacts;
|
private final @With ArtifactCoordinates additionalArtifacts;
|
||||||
private final @With boolean skipTests;
|
private final @With boolean skipTests;
|
||||||
|
|
||||||
Project(String key, String name) {
|
|
||||||
this(key, name, null, Tracker.JIRA);
|
|
||||||
}
|
|
||||||
|
|
||||||
Project(String key, String name, Tracker tracker) {
|
Project(String key, String name, Tracker tracker) {
|
||||||
this(key, name, null, tracker);
|
this(key, name, null, tracker);
|
||||||
}
|
}
|
||||||
@@ -63,11 +58,6 @@ public class Project implements Comparable<Project> {
|
|||||||
private Project(ProjectKey key, String name, String fullName, Collection<Project> dependencies, Tracker tracker,
|
private Project(ProjectKey key, String name, String fullName, Collection<Project> dependencies, Tracker tracker,
|
||||||
ArtifactCoordinates additionalArtifacts, boolean skipTests) {
|
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.key = key;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.fullName = fullName;
|
this.fullName = fullName;
|
||||||
|
|||||||
@@ -51,59 +51,59 @@ public class Projects {
|
|||||||
.artifacts("spring-data-build-parent", "spring-data-build-resources")
|
.artifacts("spring-data-build-parent", "spring-data-build-resources")
|
||||||
.and(ArtifactCoordinate.of("org.springframework.data", "spring-data-releasetrain")));
|
.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) //
|
.withDependencies(COMMONS) //
|
||||||
.withAdditionalArtifacts(
|
.withAdditionalArtifacts(
|
||||||
ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-mongodb-cross-store", "spring-data-mongodb-log4j"));
|
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) //
|
.withDependencies(COMMONS) //
|
||||||
.withFullName("Spring Data for Apache Solr");
|
.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) //
|
.withDependencies(COMMONS) //
|
||||||
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-cql"))
|
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-cql"))
|
||||||
.withFullName("Spring Data for Apache Cassandra");
|
.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"))
|
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-relational"))
|
||||||
.withDependencies(COMMONS);
|
.withDependencies(COMMONS);
|
||||||
|
|
||||||
R2DBC = new Project("DATAR2DBC", "R2DBC", Tracker.GITHUB).withDependencies(COMMONS, JDBC);
|
R2DBC = new Project("DATAR2DBC", "R2DBC", Tracker.GITHUB).withDependencies(COMMONS, JDBC);
|
||||||
|
|
||||||
GEMFIRE = new Project("DATAGEODE", "Gemfire") //
|
GEMFIRE = new Project("DATAGEODE", "Gemfire", Tracker.JIRA) //
|
||||||
.withDependencies(COMMONS)//
|
.withDependencies(COMMONS)//
|
||||||
.withSkipTests(true);
|
.withSkipTests(true);
|
||||||
|
|
||||||
GEODE = new Project("DATAGEODE", "Geode") //
|
GEODE = new Project("DATAGEODE", "Geode", Tracker.GITHUB) //
|
||||||
.withDependencies(COMMONS) //
|
.withDependencies(COMMONS) //
|
||||||
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-gemfire"))
|
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-gemfire"))
|
||||||
.withFullName("Spring Data for Apache Geode") //
|
.withFullName("Spring Data for Apache Geode") //
|
||||||
.withSkipTests(true);
|
.withSkipTests(true);
|
||||||
|
|
||||||
REST = new Project("DATAREST", "REST") //
|
REST = new Project("DATAREST", "REST", Tracker.GITHUB) //
|
||||||
.withDependencies(JPA, MONGO_DB, NEO4J, GEODE, SOLR, CASSANDRA, KEY_VALUE) //
|
.withDependencies(JPA, MONGO_DB, NEO4J, GEODE, CASSANDRA, KEY_VALUE) //
|
||||||
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA //
|
.withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA //
|
||||||
.artifacts("spring-data-rest-core", "spring-data-rest-core", "spring-data-rest-hal-browser",
|
.artifacts("spring-data-rest-core", "spring-data-rest-core", "spring-data-rest-hal-browser",
|
||||||
"spring-data-rest-hal-explorer"));
|
"spring-data-rest-hal-explorer"));
|
||||||
|
|
||||||
ENVERS = new Project("DATAENV", "Envers", Tracker.GITHUB).withDependencies(JPA);
|
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.
|
// Specify build order to avoid maven dependency errors during build.
|
||||||
List<Project> projects = Arrays.asList(BUILD, COMMONS, JPA, JDBC, MONGO_DB, NEO4J, SOLR, COUCHBASE, CASSANDRA,
|
List<Project> projects = Arrays.asList(BUILD, COMMONS, JPA, JDBC, MONGO_DB, NEO4J, SOLR, COUCHBASE, CASSANDRA,
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class CommitUnitTests {
|
|||||||
void shouldRenderCommitMessage() {
|
void shouldRenderCommitMessage() {
|
||||||
|
|
||||||
assertThat(
|
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.");
|
.hasToString("1234 - Summary.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ class CommitUnitTests {
|
|||||||
void shouldRenderCommitMessageWithDetail() {
|
void shouldRenderCommitMessageWithDetail() {
|
||||||
|
|
||||||
assertThat(
|
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")))
|
Optional.of("detail")))
|
||||||
.hasToString("1234 - Summary.\n" + "\n" + "detail");
|
.hasToString("1234 - Summary.\n" + "\n" + "detail");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user