diff --git a/README.adoc b/README.adoc index a4a6a90d..476cd75c 100644 --- a/README.adoc +++ b/README.adoc @@ -285,14 +285,17 @@ The following properties are used for both meta release and a release of an indi - `releaser.git.release-train-bom-url` - URL to a project containing a BOM. Defaults to Spring Cloud Release Git repository: `https://github.com/spring-cloud/spring-cloud-release`. - `releaser.git.documentation-url` - URL to the documentation Git repository. Defaults to `https://github.com/spring-cloud/spring-cloud-static`. - `releaser.git.documentation-branch` - Branch to check out for the documentation project. Defaults to `gh-pages`. +- `releaser.git.update-documentation-repo` - If `true` then will update documentation repository with the `current` URL. Defaults to `true`. - `releaser.git.spring-project-url` - URL to the documentation Git repository. Defaults to `https://github.com/spring-projects/spring-cloud`. - `releaser.git.spring-project-branch` - Branch to check out for the documentation project. Defaults to `gh-pages`. +- `releaser.git.update-spring-project` - If `true` then will update Spring Project page with the current release train values. Defaults to `true`. - `releaser.git.test-samples-project-url` - URL to the test samples to be checked against the given release train. Defaults to `https://github.com/spring-cloud/spring-cloud-core-tests`. - `releaser.git.test-samples-project-branch` - Branch to check out for test samples. Defaults to `master`. - `releaser.git.run-updated-samples` - If `true` then will update samples and run the the build. Defaults to `true`. -- `releaser.git.update-documentation-repo` - If `true` then will update documentation repository with the `current` URL. Defaults to `true`. +- `releaser.git.release-train-docs-url` - URL to the release train documentation. Defaults to `https://github.com/spring-cloud-sample/scripts`. +- `releaser.git.release-train-docs-branch` - Branch to check out for release train documentation. Defaults to `master`. +- `releaser.git.update-release-train-docs` - If `true` then will update the release train documentation project and run the generation. Defaults to `true`. - `releaser.git.update-spring-guides` - If `true` then will update Spring Guides with the current release train. Defaults to `true`. -- `releaser.git.update-spring-project` - If `true` then will update Spring Project page with the current release train values. Defaults to `true`. - `releaser.git.oauth-token` - GitHub OAuth token to be used to interact with GitHub repo. - `releaser.git.username` - Optional Git username. If not passed keys will be used for authentication. - `releaser.git.password` - Optional Git password. If not passed keys will be used for authentication. diff --git a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc index afa40ef4..b581b2a4 100644 --- a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc +++ b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc @@ -275,14 +275,17 @@ The following properties are used for both meta release and a release of an indi - `releaser.git.release-train-bom-url` - URL to a project containing a BOM. Defaults to Spring Cloud Release Git repository: `https://github.com/spring-cloud/spring-cloud-release`. - `releaser.git.documentation-url` - URL to the documentation Git repository. Defaults to `https://github.com/spring-cloud/spring-cloud-static`. - `releaser.git.documentation-branch` - Branch to check out for the documentation project. Defaults to `gh-pages`. +- `releaser.git.update-documentation-repo` - If `true` then will update documentation repository with the `current` URL. Defaults to `true`. - `releaser.git.spring-project-url` - URL to the documentation Git repository. Defaults to `https://github.com/spring-projects/spring-cloud`. - `releaser.git.spring-project-branch` - Branch to check out for the documentation project. Defaults to `gh-pages`. +- `releaser.git.update-spring-project` - If `true` then will update Spring Project page with the current release train values. Defaults to `true`. - `releaser.git.test-samples-project-url` - URL to the test samples to be checked against the given release train. Defaults to `https://github.com/spring-cloud/spring-cloud-core-tests`. - `releaser.git.test-samples-project-branch` - Branch to check out for test samples. Defaults to `master`. - `releaser.git.run-updated-samples` - If `true` then will update samples and run the the build. Defaults to `true`. -- `releaser.git.update-documentation-repo` - If `true` then will update documentation repository with the `current` URL. Defaults to `true`. +- `releaser.git.release-train-docs-url` - URL to the release train documentation. Defaults to `https://github.com/spring-cloud-sample/scripts`. +- `releaser.git.release-train-docs-branch` - Branch to check out for release train documentation. Defaults to `master`. +- `releaser.git.update-release-train-docs` - If `true` then will update the release train documentation project and run the generation. Defaults to `true`. - `releaser.git.update-spring-guides` - If `true` then will update Spring Guides with the current release train. Defaults to `true`. -- `releaser.git.update-spring-project` - If `true` then will update Spring Project page with the current release train values. Defaults to `true`. - `releaser.git.oauth-token` - GitHub OAuth token to be used to interact with GitHub repo. - `releaser.git.username` - Optional Git username. If not passed keys will be used for authentication. - `releaser.git.password` - Optional Git password. If not passed keys will be used for authentication. diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java index 2cb12b37..6a7e61f2 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java @@ -232,4 +232,13 @@ public class Releaser { log.warn("\nUnable to update and run samples", e); } } + + public void generateReleaseTrainDocumentation(Projects projects) { + try { + this.postReleaseActions.generateReleaseTrainDocumentation(projects); + log.info("\nSuccessfully updated and generated release train documentation"); + } catch (Exception e) { + log.warn("\nUnable to update and generate release train documentation", e); + } + } } diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java index 0e667133..38e1f675 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java @@ -156,6 +156,11 @@ public class ReleaserProperties implements Serializable { */ private String testSamplesProjectUrl = "https://github.com/spring-cloud/spring-cloud-core-tests"; + /** + * URL to the release train documentation + */ + private String releaseTrainDocsUrl = "https://github.com/spring-cloud-samples/scripts"; + /** * Branch to check out for the documentation project */ @@ -172,9 +177,9 @@ public class ReleaserProperties implements Serializable { private String testSamplesBranch = "master"; /** - * If {@code false}, will not update the documentation repository. + * Branch to check out for the release train docs */ - private boolean updateDocumentationRepo = true; + private String releaseTrainDocsBranch = "master"; /** * Where should the Spring Cloud Release repo get cloned to. If {@code null} defaults to a temporary directory @@ -207,6 +212,11 @@ public class ReleaserProperties implements Serializable { */ private Integer numberOfCheckedMilestones = 10; + /** + * If {@code false}, will not update the documentation repository. + */ + private boolean updateDocumentationRepo = true; + /** * If set to {@code false}, will not update Spring Guides for a release train. */ @@ -223,6 +233,11 @@ public class ReleaserProperties implements Serializable { */ private boolean runUpdatedSamples = true; + /** + * If set to {@code false}, will not update the release train docs + */ + private boolean updateReleaseTrainDocs = true; + public String getReleaseTrainBomUrl() { return this.releaseTrainBomUrl; } @@ -359,6 +374,30 @@ public class ReleaserProperties implements Serializable { this.updateSpringProject = updateSpringProject; } + public String getReleaseTrainDocsUrl() { + return releaseTrainDocsUrl; + } + + public void setReleaseTrainDocsUrl(String releaseTrainDocsUrl) { + this.releaseTrainDocsUrl = releaseTrainDocsUrl; + } + + public String getReleaseTrainDocsBranch() { + return releaseTrainDocsBranch; + } + + public void setReleaseTrainDocsBranch(String releaseTrainDocsBranch) { + this.releaseTrainDocsBranch = releaseTrainDocsBranch; + } + + public boolean isUpdateReleaseTrainDocs() { + return updateReleaseTrainDocs; + } + + public void setUpdateReleaseTrainDocs(boolean updateReleaseTrainDocs) { + this.updateReleaseTrainDocs = updateReleaseTrainDocs; + } + @Override public String toString() { return "Git{" + @@ -486,6 +525,11 @@ public class ReleaserProperties implements Serializable { "./target/gh-pages.sh -v {{version}} -c" }; + /** + * Command to be executed to generate release train documentation + */ + private String generateReleaseTrainDocsCommand = "./release_train.sh --retrieveversions --version {{version}} --ghpages --auto"; + public static final String SYSTEM_PROPS_PLACEHOLDER = "{{systemProps}}"; /** @@ -527,6 +571,14 @@ public class ReleaserProperties implements Serializable { return this.publishDocsCommands; } + public String getGenerateReleaseTrainDocsCommand() { + return this.generateReleaseTrainDocsCommand; + } + + public void setGenerateReleaseTrainDocsCommand(String generateReleaseTrainDocsCommand) { + this.generateReleaseTrainDocsCommand = generateReleaseTrainDocsCommand; + } + public void setPublishDocsCommands(String[] publishDocsCommands) { this.publishDocsCommands = publishDocsCommands; } @@ -542,8 +594,9 @@ public class ReleaserProperties implements Serializable { @Override public String toString() { return "Maven{" + "buildCommand='" + this.buildCommand + '\'' + ", deployCommand='" + this.deployCommand + '\'' + ", publishDocsCommands=" + Arrays - .toString(this.publishDocsCommands) + ", waitTimeInMinutes=" - + this.waitTimeInMinutes + '}'; + .toString(this.publishDocsCommands) + + "generateReleaseTrainDocsCommand='" + this.generateReleaseTrainDocsCommand + '\'' + + ", waitTimeInMinutes=" + this.waitTimeInMinutes + '}'; } } diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/ProjectGitHandler.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/ProjectGitHandler.java index 170c3fed..93639461 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/ProjectGitHandler.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/ProjectGitHandler.java @@ -76,6 +76,11 @@ public class ProjectGitHandler implements ReleaserPropertiesAware { return cloneProject(this.properties.getGit().getReleaseTrainBomUrl()); } + public File cloneReleaseTrainDocumentationProject() { + return cloneAndCheckOut(this.properties.getGit().getReleaseTrainDocsUrl(), + this.properties.getGit().getReleaseTrainDocsBranch()); + } + public File cloneDocumentationProject() { return cloneAndCheckOut(this.properties.getGit() .getDocumentationUrl(), this.properties.getGit() diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/post/PostReleaseActions.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/post/PostReleaseActions.java index ed870c9b..ae72f32b 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/post/PostReleaseActions.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/post/PostReleaseActions.java @@ -36,7 +36,7 @@ public class PostReleaseActions { /** * Clones the test project, updates it and runs tests * - * @param projects - set of project with versions to assert agains + * @param projects - set of project with versions to assert against */ public void runUpdatedTests(Projects projects) { if (!this.properties.getGit().isRunUpdatedSamples() || @@ -47,16 +47,40 @@ public class PostReleaseActions { } File file = this.projectGitHandler.cloneTestSamplesProject(); ProjectVersion projectVersion = new ProjectVersion(file); - Projects newProjects = addVersionForTestsProject(projects, projectVersion); + String releaseTrainVersion = + projects.forName(this.properties.getMetaRelease().getReleaseTrainProjectName()).version; + Projects newProjects = addVersionForTestsProject(projects, projectVersion, releaseTrainVersion); this.projectPomUpdater .updateProjectFromReleaseTrain(file, newProjects, projectVersion, false); this.projectBuilder.build(projectVersion, file.getAbsolutePath()); } - private Projects addVersionForTestsProject(Projects projects, ProjectVersion projectVersion) { + /** + * Clones the release train documentation project + * + * @param projects - set of project with versions to assert against + */ + public void generateReleaseTrainDocumentation(Projects projects) { + if (!this.properties.getGit().isUpdateReleaseTrainDocs() || + !this.properties.getMetaRelease().isEnabled()) { + log.info("Will not update the release train documentation, since the switch to do so " + + "is off. Set [releaser.git.update-release-train-docs] to [true] to change that"); + return; + } + File file = this.projectGitHandler.cloneReleaseTrainDocumentationProject(); + ProjectVersion projectVersion = new ProjectVersion(file); + String releaseTrainVersion = + projects.forName(this.properties.getMetaRelease().getReleaseTrainProjectName()).version; + Projects newProjects = addVersionForTestsProject(projects, projectVersion, releaseTrainVersion); + this.projectPomUpdater + .updateProjectFromReleaseTrain(file, newProjects, projectVersion, false); + this.projectBuilder.generateReleaseTrainDocs(releaseTrainVersion, file.getAbsolutePath()); + } + + private Projects addVersionForTestsProject(Projects projects, ProjectVersion projectVersion, + String releaseTrainVersion) { Projects newProjects = new Projects(projects); - newProjects.add(new ProjectVersion(projectVersion.projectName, - projects.forName(this.properties.getMetaRelease().getReleaseTrainProjectName()).version)); + newProjects.add(new ProjectVersion(projectVersion.projectName, releaseTrainVersion)); return newProjects; } } diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java index 602e3492..9004dd41 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java @@ -53,6 +53,18 @@ public class ProjectBuilder implements ReleaserPropertiesAware { } } + public void generateReleaseTrainDocs(String version, String projectRoot) { + try { + String updatedCommand = + this.properties.getMaven().getGenerateReleaseTrainDocsCommand().replace(VERSION_MUSTACHE, version); + runCommand(projectRoot, updatedCommand.split(" ")); + assertNoHtmlFilesInDocsContainUnresolvedTags(this.properties.getWorkingDir()); + log.info("No HTML files from docs contain unresolved tags"); + } catch (Exception e) { + throw new IllegalStateException(e); + } + } + private String commandWithSystemProps(String command, ProjectVersion version) { if (command.contains(ReleaserProperties.Maven.SYSTEM_PROPS_PLACEHOLDER)) { @@ -184,13 +196,13 @@ class ProcessExecutor implements ReleaserPropertiesAware { void runCommand(String[] commands, long waitTimeInMinutes) { try { String workingDir = this.workingDir; - log.debug("Will run the build from [{}] via {} and wait for result for [{}] minutes", + log.debug("Will run the command from [{}] via {} and wait for result for [{}] minutes", workingDir, commands, waitTimeInMinutes); ProcessBuilder builder = builder(commands, workingDir); Process process = startProcess(builder); boolean finished = process.waitFor(waitTimeInMinutes, TimeUnit.MINUTES); if (!finished) { - log.error("The build hasn't managed to finish in [{}] minutes", waitTimeInMinutes); + log.error("The command hasn't managed to finish in [{}] minutes", waitTimeInMinutes); process.destroyForcibly(); throw new IllegalStateException("Process waiting time of [" + waitTimeInMinutes + "] minutes exceeded"); } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/post/PostReleaseActionsTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/post/PostReleaseActionsTests.java index 5bafa989..22beb1e9 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/post/PostReleaseActionsTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/post/PostReleaseActionsTests.java @@ -31,12 +31,18 @@ public class PostReleaseActionsTests { File temporaryFolder; TestPomReader testPomReader = new TestPomReader(); ReleaserProperties properties = new ReleaserProperties(); - File clonedTestSamples; + File cloned; ProjectGitHandler projectGitHandler = new ProjectGitHandler(this.properties) { @Override public File cloneTestSamplesProject() { - clonedTestSamples = super.cloneTestSamplesProject(); - return clonedTestSamples; + cloned = super.cloneTestSamplesProject(); + return cloned; + } + + @Override + public File cloneReleaseTrainDocumentationProject() { + cloned = super.cloneTestSamplesProject(); + return cloned; } }; ProjectPomUpdater updater = new ProjectPomUpdater(this.properties); @@ -50,29 +56,29 @@ public class PostReleaseActionsTests { } @Test - public void should_do_nothing_when_is_not_meta_release() { + public void should_do_nothing_when_is_not_meta_release_and_update_test_is_called() { this.properties.getMetaRelease().setEnabled(false); PostReleaseActions actions = new PostReleaseActions(this.projectGitHandler, this.updater, this.builder, this.properties); actions.runUpdatedTests(currentGa()); - BDDAssertions.then(clonedTestSamples).isNull(); + BDDAssertions.then(cloned).isNull(); } @Test - public void should_do_nothing_when_the_switch_for_sample_check_is_off() { + public void should_do_nothing_when_the_switch_for_sample_check_is_off_and_update_test_is_called() { this.properties.getGit().setRunUpdatedSamples(false); PostReleaseActions actions = new PostReleaseActions(this.projectGitHandler, this.updater, this.builder, this.properties); actions.runUpdatedTests(currentGa()); - BDDAssertions.then(clonedTestSamples).isNull(); + BDDAssertions.then(cloned).isNull(); } @Test - public void should_update_project_and_run_tests() { + public void should_update_project_and_run_tests_and_update_test_is_called() { this.properties.getMetaRelease().setEnabled(true); this.properties.getGit().setTestSamplesProjectUrl(tmpFile("spring-cloud-core-tests/").getAbsolutePath() + "/"); this.properties.getMaven().setBuildCommand("touch build.log"); @@ -81,15 +87,54 @@ public class PostReleaseActionsTests { actions.runUpdatedTests(currentGa()); - Model rootPom = this.testPomReader.readPom(new File(clonedTestSamples, "pom.xml")); + Model rootPom = this.testPomReader.readPom(new File(cloned, "pom.xml")); BDDAssertions.then(rootPom.getVersion()).isEqualTo("Finchley.SR1"); BDDAssertions.then(rootPom.getParent().getVersion()).isEqualTo("2.0.4.RELEASE"); BDDAssertions.then(sleuthParentPomVersion()).isEqualTo("2.0.4.RELEASE"); - BDDAssertions.then(new File(clonedTestSamples, "build.log")).exists(); + BDDAssertions.then(new File(cloned, "build.log")).exists(); + } + + @Test + public void should_do_nothing_when_is_not_meta_release_and_release_train_docs_generation_is_called() { + this.properties.getMetaRelease().setEnabled(false); + PostReleaseActions actions = new PostReleaseActions(this.projectGitHandler, + this.updater, this.builder, this.properties); + + actions.generateReleaseTrainDocumentation(currentGa()); + + BDDAssertions.then(cloned).isNull(); + } + + @Test + public void should_do_nothing_when_the_switch_for_sample_check_is_off_and_release_train_docs_generation_is_called() { + this.properties.getGit().setUpdateReleaseTrainDocs(false); + PostReleaseActions actions = new PostReleaseActions(this.projectGitHandler, + this.updater, this.builder, this.properties); + + actions.generateReleaseTrainDocumentation(currentGa()); + + BDDAssertions.then(cloned).isNull(); + } + + @Test + public void should_update_project_and_run_tests_and_release_train_docs_generation_is_called() { + this.properties.getMetaRelease().setEnabled(true); + this.properties.getGit().setReleaseTrainDocsUrl(tmpFile("spring-cloud-core-tests/").getAbsolutePath() + "/"); + this.properties.getMaven().setGenerateReleaseTrainDocsCommand("touch generate.log"); + PostReleaseActions actions = new PostReleaseActions(this.projectGitHandler, + this.updater, this.builder, this.properties); + + actions.generateReleaseTrainDocumentation(currentGa()); + + Model rootPom = this.testPomReader.readPom(new File(cloned, "pom.xml")); + BDDAssertions.then(rootPom.getVersion()).isEqualTo("Finchley.SR1"); + BDDAssertions.then(rootPom.getParent().getVersion()).isEqualTo("2.0.4.RELEASE"); + BDDAssertions.then(sleuthParentPomVersion()).isEqualTo("2.0.4.RELEASE"); + BDDAssertions.then(new File(cloned, "generate.log")).exists(); } private String sleuthParentPomVersion() { - return this.testPomReader.readPom(new File(clonedTestSamples, "sleuth/pom.xml")) + return this.testPomReader.readPom(new File(cloned, "sleuth/pom.xml")) .getParent().getVersion(); } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java index 3110299f..646633f1 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java @@ -383,6 +383,26 @@ public class ProjectBuilderTests { .contains("1.1.0.RELEASE"); } + @Test + public void should_successfully_execute_an_update_docs_command_and_substitute_the_version() throws Exception { + ReleaserProperties properties = new ReleaserProperties(); + properties.getMaven().setGenerateReleaseTrainDocsCommand("echo '{{version}}'"); + File resolved = tmpFile("/builder/resolved"); + properties.setWorkingDir(resolved.getPath()); + TestProcessExecutor executor = testExecutor(properties.getWorkingDir()); + ProjectBuilder builder = new ProjectBuilder(properties) { + @Override + ProcessExecutor executor(String workingDir) { + return executor; + } + }; + + builder.generateReleaseTrainDocs("1.1.0.RELEASE", resolved.getAbsolutePath()); + + then(asString(tmpFile("/builder/resolved/resolved.log"))) + .contains("1.1.0.RELEASE"); + } + @Test public void should_throw_exception_when_publish_docs_command_took_too_long_to_execute() throws Exception { ReleaserProperties properties = new ReleaserProperties(); diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java index 3d3613ae..4118cf9f 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java @@ -83,6 +83,12 @@ class Tasks { args -> { args.releaser.runUpdatedSamples(args.projects); },TaskType.POST_RELEASE); + static Task UPDATE_RELEASE_TRAIN_DOCUMENTATION = task("updateReleaseTrainDocs", "ur", + "UPDATE RELEASE TRAIN DOCS", + "Update release train documentation", + args -> { + args.releaser.generateReleaseTrainDocumentation(args.projects); + },TaskType.POST_RELEASE); static final List DEFAULT_TASKS_PER_PROJECT = Stream.of( Tasks.UPDATING_POMS, @@ -100,7 +106,7 @@ class Tasks { Tasks.RUN_UPDATED_SAMPLES, Tasks.CREATE_TEMPLATES, Tasks.UPDATE_GUIDES, - // Generate docs + Tasks.UPDATE_RELEASE_TRAIN_DOCUMENTATION, Tasks.UPDATE_DOCUMENTATION, Tasks.UPDATE_SPRING_PROJECT_PAGE ).collect(Collectors.toList()); diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java index 2843deca..170dbbae 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java @@ -213,6 +213,7 @@ public class AcceptanceTests { BDDAssertions.then(gitProject(this.cloudProjectFolder).log().call().iterator().next().getShortMessage()) .contains("Updating project page to release train [Edgware.SR10]"); thenRunUpdatedTestsWereCalled(); + thenUpdateReleaseTrainDocsWasCalled(); } private void thenRunUpdatedTestsWereCalled() { @@ -220,6 +221,11 @@ public class AcceptanceTests { .runUpdatedTests(BDDMockito.any(Projects.class)); } + private void thenUpdateReleaseTrainDocsWasCalled() { + BDDMockito.then(this.postReleaseActions).should() + .generateReleaseTrainDocumentation(BDDMockito.any(Projects.class)); + } + private Map edgwareSr10() { Map versions = new LinkedHashMap<>(); versions.put("spring-boot", "1.5.16.RELEASE"); @@ -781,6 +787,13 @@ public class AcceptanceTests { return file; } + @Override + public File cloneReleaseTrainDocumentationProject() { + File file = super.cloneReleaseTrainDocumentationProject(); + this.clonedProjects.add(file); + return file; + } + @Override public File cloneProjectFromOrg(String projectName) { File file = super.cloneProjectFromOrg(projectName); this.clonedProjects.add(file);