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}."