From ab909975a302a8db8e7d138be9d0b1fcef762c03 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 10 Dec 2024 09:36:05 +0100 Subject: [PATCH] Integrate trigger for commercial antora documentation sites. Closes #101 --- .../data/release/cli/ReleaseCommands.java | 2 +- .../data/release/issues/github/GitHub.java | 56 ++++++++++--------- .../release/issues/github/GitHubCommands.java | 7 ++- .../issues/github/GitHubWorkflows.java | 4 +- 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java b/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java index d0237ef..877376d 100644 --- a/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java +++ b/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java @@ -247,7 +247,7 @@ class ReleaseCommands extends TimedCommand { } if (module == null || module.equalsIgnoreCase(project.getName())) { - gitHub.triggerAntoraWorkflow(project); + gitHub.triggerAntoraWorkflow(it.getSupportedProject()); } }); } diff --git a/src/main/java/org/springframework/data/release/issues/github/GitHub.java b/src/main/java/org/springframework/data/release/issues/github/GitHub.java index 5129f1f..402f5c2 100644 --- a/src/main/java/org/springframework/data/release/issues/github/GitHub.java +++ b/src/main/java/org/springframework/data/release/issues/github/GitHub.java @@ -41,8 +41,8 @@ import org.springframework.data.release.model.ArtifactVersion; import org.springframework.data.release.model.DocumentationMetadata; import org.springframework.data.release.model.Iteration; import org.springframework.data.release.model.ModuleIteration; -import org.springframework.data.release.model.Project; import org.springframework.data.release.model.Projects; +import org.springframework.data.release.model.SupportStatus; import org.springframework.data.release.model.SupportedProject; import org.springframework.data.release.model.Tracker; import org.springframework.data.release.model.Train; @@ -76,9 +76,8 @@ public class GitHub extends GitHubSupport implements IssueTracker { private static final String RELEASE_URI_TEMPLATE = "/repos/spring-projects/{repoName}/releases"; private static final String RELEASE_BY_ID_URI_TEMPLATE = "/repos/spring-projects/{repoName}/releases/{id}"; - private static final String WORKFLOWS = "/repos/spring-projects/spring-data-dev-tools/actions/workflows"; - - private static final String WORKFLOW_DISPATCH = "/repos/spring-projects/spring-data-dev-tools/actions/workflows/{workflow_id}/dispatches"; + private static final String WORKFLOWS = "/repos/spring-projects/spring-data-release-commercial/actions/workflows"; + private static final String WORKFLOW_DISPATCH = "/repos/spring-projects/spring-data-release-commercial/actions/workflows/{workflow_id}/dispatches"; private static final ParameterizedTypeReference> MILESTONES_TYPE = new ParameterizedTypeReference>() {}; private static final ParameterizedTypeReference> ISSUES_TYPE = new ParameterizedTypeReference>() {}; @@ -226,7 +225,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { logger.log(moduleIteration, "Creating GitHub milestone %s", githubMilestone); HttpHeaders httpHeaders = new HttpHeaders(); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); operations.exchange(MILESTONES_URI_TEMPLATE, HttpMethod.POST, @@ -286,7 +285,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { gitHubIssue = gitHubIssue.withAssignees(Collections.singletonList(properties.getUsername())); } - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); GitHubReadIssue body = operations.exchange(ISSUES_URI_TEMPLATE, HttpMethod.POST, @@ -315,7 +314,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { } String repositoryName = GitProject.of(project).getRepositoryName(); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("id", stripHash(ticket)); @@ -368,7 +367,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { String repositoryName = GitProject.of(module).getRepositoryName(); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("id", stripHash(ticket)); @@ -382,12 +381,6 @@ public class GitHub extends GitHubSupport implements IssueTracker { return ticket.getId().startsWith("#") ? ticket.getId().substring(1) : ticket.getId(); } - private Map newUrlTemplateVariables() { - - Map parameters = new HashMap<>(); - return parameters; - } - private Optional findMilestone(ModuleIteration moduleIteration) { // we're inside a cacheable object, so we cannot reuse Spring Caching for inner method calls. @@ -413,7 +406,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { for (String state : Arrays.asList("open", "closed")) { - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("state", state); @@ -473,7 +466,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { logger.log(module, "Marking milestone %s as released.", milestone); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", project.getRepositoryName()); parameters.put("id", milestone.getNumber()); @@ -547,7 +540,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { */ private GitHubReadIssue findTicket(String repositoryName, String ticketId) { - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("id", ticketId.startsWith("#") ? ticketId.substring(1) : ticketId); @@ -628,7 +621,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { String repositoryName = GitProject.of(train.getSupportedProject(Projects.BUILD)).getRepositoryName(); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); // /user requires authentication @@ -644,17 +637,17 @@ public class GitHub extends GitHubSupport implements IssueTracker { /** * Trigger the Antora workflow for the given module. */ - public void triggerAntoraWorkflow(Project project) { + public void triggerAntoraWorkflow(SupportedProject project) { logger.log("GitHub", "Triggering Antora workflow for %s…", project.getName()); - GitHubWorkflow workflow = getWorkflow(); + GitHubWorkflow workflow = getWorkflow(project.getSupportStatus()); Map body = new LinkedHashMap<>(); body.put("ref", "main"); body.put("inputs", Collections.singletonMap("module", project.getName().toLowerCase(Locale.ROOT))); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("workflow_id", workflow.getId()); ResponseEntity entity = operations.exchange(WORKFLOW_DISPATCH, HttpMethod.POST, new HttpEntity<>(body), @@ -668,7 +661,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { } @Cacheable("get-workflow") - public GitHubWorkflow getWorkflow() { + public GitHubWorkflow getWorkflow(SupportStatus supportStatus) { ResponseEntity entity = operations.exchange(WORKFLOWS, HttpMethod.GET, null, WORKFLOWS_TYPE); @@ -679,7 +672,16 @@ public class GitHub extends GitHubSupport implements IssueTracker { GitHubWorkflows workflows = entity.getBody(); for (GitHubWorkflow workflow : workflows.getWorkflows()) { - if (workflow.getPath().endsWith("antora-site.yml")) { + if (supportStatus == SupportStatus.OSS && workflow.getPath().endsWith("antora-oss-site.yml")) { + + if (!workflow.getState().equals("active")) { + throw new IllegalStateException("Antora workflow is not active"); + } + + return workflow; + } + + if (supportStatus == SupportStatus.COMMERCIAL && workflow.getPath().endsWith("antora-commercial-site.yml")) { if (!workflow.getState().equals("active")) { throw new IllegalStateException("Antora workflow is not active"); @@ -733,7 +735,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { private GitHubRelease findRelease(String repositoryName, String tagName) { - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("tag", tagName); @@ -752,7 +754,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { private void createRelease(String repositoryName, GitHubRelease release) { - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); operations.exchange(RELEASE_URI_TEMPLATE, HttpMethod.POST, new HttpEntity<>(release), GitHubRelease.class, @@ -761,7 +763,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { private void updateRelease(String repositoryName, GitHubRelease release) { - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("id", release.getId()); @@ -781,7 +783,7 @@ public class GitHub extends GitHubSupport implements IssueTracker { Milestone milestone = optionalMilestone.orElseThrow(() -> noSuchMilestone(moduleIteration)); - Map parameters = newUrlTemplateVariables(); + Map parameters = new HashMap<>(); parameters.put("repoName", repositoryName); parameters.put("id", milestone.getNumber()); diff --git a/src/main/java/org/springframework/data/release/issues/github/GitHubCommands.java b/src/main/java/org/springframework/data/release/issues/github/GitHubCommands.java index d72503c..367ac3a 100644 --- a/src/main/java/org/springframework/data/release/issues/github/GitHubCommands.java +++ b/src/main/java/org/springframework/data/release/issues/github/GitHubCommands.java @@ -112,13 +112,14 @@ public class GitHubCommands extends TimedCommand { return gitHub.createReleaseMarkdown(module, ticketReferences); } + public void triggerAntoraWorkflow(SupportedProject project) { + gitHub.triggerAntoraWorkflow(project); + } + private void createOrUpdateRelease(ModuleIteration module, TrainIteration previousIteration) { List ticketReferences = git.getTicketReferencesBetween(module.getSupportedProject(), previousIteration, module.getTrainIteration()); gitHub.createOrUpdateRelease(module, ticketReferences); } - public void triggerAntoraWorkflow(Project project) { - gitHub.triggerAntoraWorkflow(project); - } } diff --git a/src/main/java/org/springframework/data/release/issues/github/GitHubWorkflows.java b/src/main/java/org/springframework/data/release/issues/github/GitHubWorkflows.java index d8e7a32..563329c 100644 --- a/src/main/java/org/springframework/data/release/issues/github/GitHubWorkflows.java +++ b/src/main/java/org/springframework/data/release/issues/github/GitHubWorkflows.java @@ -23,9 +23,9 @@ import java.util.List; * @author Mark Paluch */ @Value -class GitHubWorkflows { +public class GitHubWorkflows { - private List workflows; + List workflows; @Value static class GitHubWorkflow {