#4 - First draft of marking versions as released.

JIRA implementation. Fails currently as the server complains about the user not being a project admin (which is not the case).
This commit is contained in:
Oliver Gierke
2016-04-06 22:07:02 +02:00
parent 3fa7bda4d1
commit 10e2e52bf0
6 changed files with 42 additions and 9 deletions

View File

@@ -111,4 +111,11 @@ public interface IssueTracker extends Plugin<Project> {
* @return
*/
Changelog getChangelogFor(ModuleIteration module);
/**
* Closes the given {@link ModuleIteration}.
*
* @param module must not be {@literal null}.
*/
void closeIteration(ModuleIteration module);
}

View File

@@ -106,6 +106,11 @@ class IssueTrackerCommands extends TimedCommand {
stream().map(it -> it.toString()).collect(Collectors.joining("\n"));
}
@CliCommand("tracker close")
public void closeIteration(@CliOption(key = "", mandatory = true) TrainIteration iteration) {
iteration.forEach(module -> getTrackerFor(module).closeIteration(module));
}
private Changelog getChangelog(ModuleIteration module) {
return getTrackerFor(module).getChangelogFor(module);
}

View File

@@ -326,6 +326,15 @@ class GitHub implements IssueTracker {
return Optional.empty();
}
/*
* (non-Javadoc)
* @see org.springframework.data.release.issues.IssueTracker#closeIteration(org.springframework.data.release.model.ModuleIteration)
*/
@Override
public void closeIteration(ModuleIteration module) {
}
private Tickets getTicketsFor(ModuleIteration moduleIteration, boolean forCurrentUser) {
return getIssuesFor(moduleIteration, forCurrentUser).//

View File

@@ -63,6 +63,7 @@ class Jira implements JiraConnector {
private static final String PROJECT_VERSIONS_TEMPLATE = BASE_URI + "/project/{project}/version?startAt={startAt}";
private static final String PROJECT_COMPONENTS_TEMPLATE = BASE_URI + "/project/{project}/components";
private static final String VERSIONS_TEMPLATE = BASE_URI + "/version";
private static final String VERSION_TEMPLATE = BASE_URI + "/version/{id}";
private static final String SEARCH_TEMPLATE = BASE_URI + "/search?jql={jql}&fields={fields}&startAt={startAt}";
public static final String INFRASTRUCTURE_COMPONENT_NAME = "Infrastructure";
@@ -354,7 +355,7 @@ class Jira implements JiraConnector {
* @see org.springframework.data.release.jira.JiraConnector#closeIteration(org.springframework.data.release.model.Train, org.springframework.data.release.model.Iteration)
*/
@Override
public void closeIteration(TrainIteration iteration) {
public void closeIteration(ModuleIteration module) {
// for each module
@@ -364,6 +365,19 @@ class Jira implements JiraConnector {
// -- close tickets
// - mark version as releases
findJiraReleaseVersion(module).//
map(JiraReleaseVersion::markReleased).//
ifPresent(version -> {
logger.log(module, "Marking version %s as released.", version);
Map<String, Object> parameters = newUrlTemplateVariables();
parameters.put("id", version.getId());
operations.put(VERSION_TEMPLATE, version, parameters);
});
// - if no next version exists, create
}

View File

@@ -36,13 +36,6 @@ interface JiraConnector extends IssueTracker {
*/
void verifyBeforeRelease(TrainIteration iteration);
/**
* Closes the given {@link TrainIteration}.
*
* @param iteration must not be {@literal null}.
*/
void closeIteration(TrainIteration iteration);
/**
* Lookup a JIRA release version.
*

View File

@@ -30,6 +30,7 @@ import org.springframework.util.Assert;
class JiraReleaseVersion {
String id, name, project, description;
boolean released;
public static JiraReleaseVersion of(ModuleIteration moduleIteration, JiraVersion jiraVersion) {
@@ -37,7 +38,11 @@ class JiraReleaseVersion {
Assert.notNull(jiraVersion, "JiraVersion must not be null.");
return new JiraReleaseVersion(null, jiraVersion.toString(), moduleIteration.getProjectKey().getKey(),
jiraVersion.getDescription());
jiraVersion.getDescription(), false);
}
public JiraReleaseVersion markReleased() {
return new JiraReleaseVersion(id, name, project, description, true);
}
public boolean hasSameNameAs(JiraVersion jiraVersion) {