From fcf00647e6aeeefb4f9c9d88c202e9f420f1c56a Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Tue, 20 Jun 2023 14:11:43 -0500 Subject: [PATCH] Update Antora - Use org.gradle 1.0.0 - Need to use JDK 17 for latest plugin - Use io.spring.antora.generate-antora-yml - Use collector extension - Use name: session Closes gh-2327 --- .../continuous-integration-workflow.yml | 4 +- .github/workflows/pr-build-workflow.yml | 2 +- .gitignore | 1 + .sdkmanrc | 6 ++ spring-session-docs/antora.yml | 28 ++++++- .../spring-session-docs.gradle | 79 ++++++------------- 6 files changed, 59 insertions(+), 61 deletions(-) create mode 100644 .sdkmanrc diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index b3bfbdd5..05bbcae8 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -20,7 +20,7 @@ jobs: if: github.repository == 'spring-projects/spring-session' strategy: matrix: - jdk: [8, 11] + jdk: [17] fail-fast: false steps: - uses: actions/checkout@v2 @@ -53,7 +53,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v1 with: - java-version: '8' + java-version: '17' - name: Setup gradle user name run: | mkdir -p ~/.gradle diff --git a/.github/workflows/pr-build-workflow.yml b/.github/workflows/pr-build-workflow.yml index 4bf8d1b8..b21d28cc 100644 --- a/.github/workflows/pr-build-workflow.yml +++ b/.github/workflows/pr-build-workflow.yml @@ -9,7 +9,7 @@ jobs: if: github.repository == 'spring-projects/spring-session' strategy: matrix: - jdk: [8, 11] + jdk: [17] fail-fast: false steps: - uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index 8b42ff9b..780a2f84 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ out !etc/eclipse/.checkstyle !**/src/**/build .DS_Store +cached-antora-playbook.yml diff --git a/.sdkmanrc b/.sdkmanrc new file mode 100644 index 00000000..db5a78cf --- /dev/null +++ b/.sdkmanrc @@ -0,0 +1,6 @@ +# Use sdkman to run "sdk env" to initialize with correct JDK version +# Enable auto-env through the sdkman_auto_env config +# See https://sdkman.io/usage#config +# A summary is to add the following to ~/.sdkman/etc/config +# sdkman_auto_env=true +java=17.0.2-tem diff --git a/spring-session-docs/antora.yml b/spring-session-docs/antora.yml index ebfea71f..b8622d08 100644 --- a/spring-session-docs/antora.yml +++ b/spring-session-docs/antora.yml @@ -1,3 +1,25 @@ -name: ROOT -version: '2.6.4' -prerelease: '-SNAPSHOT' +name: session +version: true +title: Spring Session +start_page: ROOT:index.adoc +nav: + - modules/ROOT/nav.adoc +ext: + collector: + run: + command: gradlew -q -PbuildSrc.skipTests=true "-Dorg.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError" :spring-session-docs:generateAntoraYml + local: true + scan: + dir: ./build/generated-antora-resources +asciidoc: + attributes: + gh-url: "https://github.com/spring-projects/spring-session/tree/{gh-tag}" + download-url: "https://github.com/spring-projects/spring-session/archive/{gh-tag}.zip" + gh-samples-url: "{gh-url}/spring-session-samples/" + samples-dir: "example$spring-session-samples/" + session-jdbc-main-resources-dir: "example$session-jdbc-main-resources-dir/" + spring-session-data-mongodb-dir: "example$spring-session-data-mongodb-dir/" + docs-test-dir: "example$java/" + websocketdoc-test-dir: 'example$java/docs/websocket/' + docs-test-resources-dir: "example$resources/" + indexdoc-tests: "example$java/docs/IndexDocTests.java" diff --git a/spring-session-docs/spring-session-docs.gradle b/spring-session-docs/spring-session-docs.gradle index 1c47661b..07988034 100644 --- a/spring-session-docs/spring-session-docs.gradle +++ b/spring-session-docs/spring-session-docs.gradle @@ -1,5 +1,6 @@ plugins { - id "io.github.rwinch.antora" version "0.0.2" + id 'org.antora' version '1.0.0' + id 'io.spring.antora.generate-antora-yml' version '0.0.1' } apply plugin: 'io.spring.convention.docs' @@ -27,17 +28,30 @@ dependencies { testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' } + antora { - antoraVersion = "3.0.0-alpha.8" - arguments = ["--fetch"] + playbook = 'cached-antora-playbook.yml' + playbookProvider { + repository = 'spring-projects/spring-session' + branch = 'docs-build' + path = 'lib/antora/templates/per-branch-antora-playbook.yml' + checkLocalBranch = true + } + options = [clean: true, fetch: !project.gradle.startParameter.offline, stacktrace: true] } -tasks.antora { - environment = [ - "ALGOLIA_API_KEY" : "82c7ead946afbac3cf98c32446154691", - "ALGOLIA_APP_ID" : "244V8V9FGG", - "ALGOLIA_INDEX_NAME" : "session-docs" - ] +tasks.named("generateAntoraYml") { + asciidocAttributes = project.provider( { generateAttributes() } ) + asciidocAttributes.putAll(providers.provider( { resolvedVersions(project.configurations.testRuntimeClasspath) })) +} + + +def generateAttributes() { + def ghTag = snapshotBuild ? 'main' : project.version + + return ['gh-tag':ghTag, + 'spring-boot-version': springBootVersion, + 'spring-session-version': project.version] } sourceSets { @@ -51,58 +65,13 @@ sourceSets { } } -tasks.register("generateAntora") { - group = "Documentation" - description = "Generates the antora.yml for dynamic properties" - doLast { - def dollar = '$' - def ghTag = snapshotBuild ? 'main' : project.version - def ghUrl = "https://github.com/spring-projects/spring-session/tree/$ghTag" - def versions = resolvedVersions(project.configurations.testRuntimeClasspath) - def ymlVersions = "" - versions.call().each { name, version -> - ymlVersions += """ - ${name}: ${version}""" - } - def outputFile = new File("$buildDir/generateAntora/antora.yml") - outputFile.getParentFile().mkdirs() - outputFile.createNewFile() - def antoraYmlText = file("antora.yml").getText() - outputFile.setText("""$antoraYmlText -title: Spring Session -start_page: ROOT:index.adoc -nav: - - modules/ROOT/nav.adoc - -asciidoc: - attributes: - download-url: "https://github.com/spring-projects/spring-session/archive/${ghTag}.zip" - gh-samples-url: "$ghUrl/spring-session-samples/" - samples-dir: "example${dollar}spring-session-samples/" - session-jdbc-main-resources-dir: "example${dollar}session-jdbc-main-resources-dir/" - spring-session-data-mongodb-dir: "example${dollar}spring-session-data-mongodb-dir/" - docs-test-dir: "example${dollar}java/" - websocketdoc-test-dir: 'example${dollar}java/docs/websocket/' - docs-test-resources-dir: "example${dollar}resources/" - indexdoc-tests: "example${dollar}java/docs/IndexDocTests.java" - spring-session-version: ${project.version} - version-milestone: $milestoneBuild - version-release: $releaseBuild - version-snapshot: $snapshotBuild - spring-boot-version: ${springBootVersion} -${ymlVersions} -""") - } -} repositories { maven { url "https://repo.spring.io/release" } } def resolvedVersions(Configuration configuration) { - return { - configuration.resolvedConfiguration + return configuration.resolvedConfiguration .resolvedArtifacts .collectEntries { [(it.name + "-version"): it.moduleVersion.id.version] } - } }