You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2022/03/08 17:23:30 UTC

[bookkeeper] branch master updated: [website] restore javadoc generation and automate website deployment (#3081)

This is an automated email from the ASF dual-hosted git repository.

eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new f13f621  [website] restore javadoc generation and automate website deployment (#3081)
f13f621 is described below

commit f13f621d6a5c5c134774d2d05e793182a5ec4e79
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Tue Mar 8 18:22:55 2022 +0100

    [website] restore javadoc generation and automate website deployment (#3081)
    
    * [website] restore javadoc generation and automate website deployment
---
 .github/workflows/pr-validation.yml                |  3 ++
 .../{pr-validation.yml => website-deploy.yaml}     | 47 +++++-------------
 build.gradle                                       | 58 ++++++++++++++++++----
 site/Makefile                                      |  5 +-
 site/scripts/javadoc-gen.sh                        | 23 +++++++--
 5 files changed, 84 insertions(+), 52 deletions(-)

diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml
index 2f14c6f..fa914ec 100644
--- a/.github/workflows/pr-validation.yml
+++ b/.github/workflows/pr-validation.yml
@@ -55,3 +55,6 @@ jobs:
         
       - name: Check license files
         run: dev/check-all-licenses
+
+      - name: Generate Javadoc
+        run: ./gradlew generateApiJavadoc
diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/website-deploy.yaml
similarity index 53%
copy from .github/workflows/pr-validation.yml
copy to .github/workflows/website-deploy.yaml
index 2f14c6f..4e18f70 100644
--- a/.github/workflows/pr-validation.yml
+++ b/.github/workflows/website-deploy.yaml
@@ -17,41 +17,20 @@
 # under the License.
 #
 
-name: PR Validation
-
+name: Website deploy
 on:
-  push:
-  pull_request:
-    branches:
-      - master
-      - branch-*
-    paths-ignore:
-      - 'site/**'
-    workflow_dispatch:
-
-env:
-  GRADLE_ARGS: -Dtestlogger.theme=plain -DtestHideStandardOut=true
-
+  schedule:
+    - cron: '0 */24 * * *'
 
 jobs:
-  check:
-
+  build-website:
+    name: Build and publish website
     runs-on: ubuntu-latest
-    timeout-minutes: 60
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v2
-
-      - name: Tune Runner VM
-        uses: ./.github/actions/tune-runner-vm
-
-      - name: Set up JDK 11
-        uses: actions/setup-java@v2
-        with:
-          distribution: 'temurin'
-          java-version: 11
-      - name: Validate pull request
-        run: ./gradlew build -x signDistTar -x test ${GRADLE_ARGS}
-        
-      - name: Check license files
-        run: dev/check-all-licenses
+    timeout-minutes: 180
+      - name: publish
+        run: |
+          cd site
+          make setup
+          make latest_javadoc
+          make apache
+          ./scripts/publish-website.sh
diff --git a/build.gradle b/build.gradle
index 21843de..2675474 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,6 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+import io.franzbecker.gradle.lombok.task.DelombokTask
+
 buildscript {
     repositories {
         mavenCentral()
@@ -30,6 +32,7 @@ plugins {
     id 'org.nosphere.apache.rat'
     id 'com.github.spotbugs'
     id 'org.owasp.dependencycheck'
+    id 'io.franzbecker.gradle-lombok' version "5.0.0"
 }
 
 subprojects {
@@ -238,16 +241,7 @@ allprojects {
             options.compilerArgs = ["-Xlint:unchecked", "-Xlint:deprecation", "-Werror"]
         }
 
-        javadoc {
-            options.addBooleanOption('Xdoclint:none', true)
-            includes = [
-                    '**/org/apache/bookkeeper/client/api/**',
-                    '**/org/apache/bookkeeper/common/annotation/**',
-                    '**/org/apache/bookkeeper/conf/**',
-                    '**/org/apache/bookkeeper/feature/**',
-                    '**/org/apache/bookkeeper/stats/**',
-            ]
-        }
+
 
         def componentName = it.name
         publishing {
@@ -333,10 +327,54 @@ allprojects {
             // error message you got
             suppressedValidationErrors.add('enforced-platform')
         }
+        
+        apply plugin: 'io.franzbecker.gradle-lombok'
+
+        task delombok(type: DelombokTask, dependsOn: compileJava) {
+            ext.outputDir = file("$buildDir/delombok")
+            outputs.dir(outputDir)
+            sourceSets.main.java.srcDirs.each {
+                inputs.dir(it)
+                args(it, "-d", outputDir)
+            }
+        }
+
+        task generateJavadoc(type: Javadoc, dependsOn: delombok) {
+            options.addBooleanOption('Xdoclint:none', true)
+            source = delombok.outputDir
+            classpath = sourceSets.main.compileClasspath
+        }
 
     }
 
     repositories {
         mavenCentral()
     }
+}
+
+
+def javadocProjects = [
+        ":bookkeeper-common",
+        ":bookkeeper-server",
+        ":bookkeeper-stats",
+        ":bookkeeper-stats-providers:prometheus-metrics-provider",
+        ":bookkeeper-stats-providers:codahale-metrics-provider",
+]
+
+task generateApiJavadoc(type: Javadoc) {
+    javadocProjects.each { dependsOn("${it}:delombok");  }
+    options.addBooleanOption("package", true)
+    options.addBooleanOption('Xdoclint:none', true)
+    options.addBooleanOption('-no-module-directories', true)
+
+    options.addMultilineMultiValueOption("group").setValue([
+            ["Bookkeeper Client", "org.apache.bookkeeper.client*:org.apache.bookkeeper.common.annotation*:org.apache.bookkeeper.conf*:org.apache.bookkeeper.feature*"],
+            ["Bookkeeper Stats API", "org.apache.bookkeeper.stats*"],
+            ["Bookkeeper Stats Providers", "org.apache.bookkeeper.stats.codahale*:org.apache.bookkeeper.stats.prometheus*"]
+    ])
+    source = javadocProjects.collect { project(it).buildDir.getAbsolutePath() + "/delombok" }
+    classpath = files(javadocProjects.collect { project(it).sourceSets.main.compileClasspath })
+
+    title = "BookKeeper Java API (version ${project.version})"
+    destinationDir = file("${buildDir}/docs/javadoc")
 }
\ No newline at end of file
diff --git a/site/Makefile b/site/Makefile
index 37af9b9..6f99723 100644
--- a/site/Makefile
+++ b/site/Makefile
@@ -10,9 +10,8 @@ clean:
 	rm -rf _site local-generated generated_site
 
 setup:
-	gem install --user-install bundler \
-		--no-rdoc \
-		--no-ri
+	gem install --user-install bundler
+
 	NOKOGIRI_USE_SYSTEM_LIBRARIES=true $(BUNDLE) install \
 		--path vendor/bundle
 
diff --git a/site/scripts/javadoc-gen.sh b/site/scripts/javadoc-gen.sh
index 0998213..ff1241a 100755
--- a/site/scripts/javadoc-gen.sh
+++ b/site/scripts/javadoc-gen.sh
@@ -7,18 +7,31 @@ function build_javadoc() {
 
   echo "Building the javadoc for version ${version}."
   if [ "$version" == "latest" ]; then
-    javadoc_gen_dir="${ROOT_DIR}/target/site/apidocs"
+    javadoc_gen_dir="${ROOT_DIR}/build/docs/javadoc"
+    use_gradle=true
     cd $ROOT_DIR
   else
-    javadoc_gen_dir="/tmp/bookkeeper-${version}/target/site/apidocs"
+
     rm -rf /tmp/bookkeeper-${version}
-    git clone https://github.com/apache/bookkeeper /tmp/bookkeeper-${version}
+    git clone https://github.com/apache/bookkeeper  -b "release-${version}" /tmp/bookkeeper-${version}
     cd /tmp/bookkeeper-${version}
-    git checkout "release-${version}"
+    if [[ -f "pom.xml" ]]; then
+      use_gradle=false
+      javadoc_gen_dir="/tmp/bookkeeper-${version}/target/site/apidocs"
+    else
+      use_gradle=true
+      javadoc_gen_dir="/tmp/bookkeeper-${version}/build/docs/javadoc"
+    fi
+
   fi
   javadoc_dest_dir="${ROOT_DIR}/site/docs/${version}/api/javadoc"
   rm -rf $javadoc_dest_dir
-  mvn clean install javadoc:aggregate -DskipTests
+  if [[ "$use_gradle" == "true" ]]; then
+    ./gradlew generateApiJavadoc
+  else
+    mvn clean install javadoc:aggregate -DskipTests
+  fi
+
   mv $javadoc_gen_dir $javadoc_dest_dir
 
   echo "Built the javadoc for version ${version}."