diff --git a/.github/workflows/callable.publish-javadoc.yml b/.github/workflows/callable.publish-javadoc.yml
index 0472f30..1840301 100644
--- a/.github/workflows/callable.publish-javadoc.yml
+++ b/.github/workflows/callable.publish-javadoc.yml
@@ -1,14 +1,100 @@
name: Deploy Javadoc
on:
+ workflow_dispatch:
workflow_call:
jobs:
+ deploy_basics:
+ name: Build & deploy
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Checkout project sources
+ uses: actions/checkout@v4
+ with:
+ ref: gh-pages
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Conclude javadoc version and set env
+ run: |
+ if [[ "$GITHUB_REF" == "refs/heads/main" || "$GITHUB_REF" == "refs/heads/master" ]]; then
+ echo "PUBLISH_VERSION=current" >> $GITHUB_ENV
+ else
+ echo "PUBLISH_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ fi
+
+ - name: Create root index redirect
+ env:
+ GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
+ run: |
+ echo "/$GITHUB_REPOSITORY_NAME/javadoc/
" > index.html
+
+ - name: Create javadoc index.html listing versions
+ env:
+ PUBLISH_VERSION: ${{ env.PUBLISH_VERSION }}
+ GH_API_CONTENTS_URL: https://api.github.com/repos/${{ github.repository }}/contents/javadoc?ref=gh-pages
+ GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
+ run: |
+ mkdir -p javadoc
+ rm javadoc/index.html
+ touch javadoc/index.html
+
+ #curl "$GH_API_CONTENTS_URL" | jq '.[].name' -r
+ versions=( $(curl "$GH_API_CONTENTS_URL" | jq -r "[.[] | select( .type == \"dir\" ) | .name] + [\"$PUBLISH_VERSION\"] | unique | .[]") )
+
+ echo "versions:"
+ for value in "${versions[@]}"
+ do
+ echo "- $value"
+ done
+
+ echo "" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo "
" >> javadoc/index.html
+ echo " Javadoc | '$GITHUB_REPOSITORY_NAME'" >> javadoc/index.html
+ echo " " >> javadoc/index.html
+ echo " " >> javadoc/index.html
+ echo " " >> javadoc/index.html
+ echo " " >> javadoc/index.html
+ echo " " >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo " Javadoc
" >> javadoc/index.html
+ echo " Versions
" >> javadoc/index.html
+ echo " " >> javadoc/index.html
+
+ for value in "${versions[@]}"
+ do
+ echo " - $value
" >> javadoc/index.html
+ done
+
+ echo "
" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+ echo "" >> javadoc/index.html
+
+ - name: Commit files
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+ git add .
+ git status
+ git diff-index --quiet HEAD || git commit -m "chore: updates index.html files incl. javadoc versions"
+
+ # Push changes
+ - name: Push changes
+ run: |
+ git push
+
deploy_javadoc:
name: Build & deploy
runs-on: ubuntu-latest
permissions:
contents: write
+ needs: deploy_basics
steps:
- name: Checkout project sources
diff --git a/README.md b/README.md
index 7f91e86..2ff5b87 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,6 @@
[](https://github.com/thriving-dev/java-library-template/actions/workflows/1.pipeline.yml)
[](https://central.sonatype.com/artifact/dev.thriving.oss/java-library-template)
[](CODE_OF_CONDUCT.md)
-[](https://thriving-dev.github.io/java-library-template/javadoc/current)
+[](https://thriving-dev.github.io/java-library-template/javadoc/)
Java library template • Gradle • GitHub Actions CI/CD to build, release & publish to Maven Central • Renovate • Trivy Scan • Issue & PR Templates