From 10e2e52bf0a6cc751bc55da1c58488f794915ea3 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 6 Apr 2016 22:07:02 +0200 Subject: [PATCH] #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). --- .../data/release/issues/IssueTracker.java | 7 +++++++ .../release/issues/IssueTrackerCommands.java | 5 +++++ .../data/release/issues/github/GitHub.java | 9 +++++++++ .../data/release/issues/jira/Jira.java | 16 +++++++++++++++- .../data/release/issues/jira/JiraConnector.java | 7 ------- .../release/issues/jira/JiraReleaseVersion.java | 7 ++++++- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java index 344127f..85520cb 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java @@ -111,4 +111,11 @@ public interface IssueTracker extends Plugin { * @return */ Changelog getChangelogFor(ModuleIteration module); + + /** + * Closes the given {@link ModuleIteration}. + * + * @param module must not be {@literal null}. + */ + void closeIteration(ModuleIteration module); } diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTrackerCommands.java b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTrackerCommands.java index 67bfdc1..a16f0bc 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTrackerCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTrackerCommands.java @@ -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); } diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java index 8afaf25..06afb10 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java @@ -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).// 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 82fe8df..18cf1e4 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 @@ -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 parameters = newUrlTemplateVariables(); + parameters.put("id", version.getId()); + + operations.put(VERSION_TEMPLATE, version, parameters); + }); + // - if no next version exists, create } diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraConnector.java b/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraConnector.java index 61a9f0f..82c6f3a 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraConnector.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraConnector.java @@ -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. * diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraReleaseVersion.java b/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraReleaseVersion.java index fa2b164..3019687 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraReleaseVersion.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/jira/JiraReleaseVersion.java @@ -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) {