Our great sponsors
-
javadoc-cleanup
Create mobile-friendly documentation sites by post-processing javadocs in GitHub Actions
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
Chips-n-Salsa
A Java library of Customizable, Hybridizable, Iterative, Parallel, Stochastic, and Self-Adaptive Local Search Algorithms
The next step uses a GitHub Action that I've implemented javadoc-cleanup to insert canonical URLs into the head of each javadoc page. I also use it to insert a referrer policy of strict-origin-when-cross-origin into the head of each javadoc page, as well as links to my project's favicon, and my web monetization pointer. This step is conditional, like the previous step, and only runs on release and workflow_dispatch events.
On release and workflow_dispatch events, use the generate-sitemap GitHub Action, which I maintain, to generate an XML sitemap for the documentation website. The first step below generates the sitemap, and the second one below just logs some information about that action's run to the workflow run's log (e.g., number of URLs in the sitemap, and number excluded by either robots.txt or noindex directives).
name: docs on: push: branches: [ master ] paths: [ '**.java', '.github/workflows/docs.yml' ] pull_request: branches: [ master ] release: types: [created] workflow_dispatch: jobs: docs: runs-on: ubuntu-latest steps: - name: Checkout the repo uses: actions/checkout@v3 - name: Checkout the gh-pages branch uses: actions/checkout@v3 with: fetch-depth: 0 ref: gh-pages path: gh-pages - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '17' - name: Build docs with Maven run: mvn compile javadoc:javadoc - name: Copy to Documentation Website Location if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: | rm -rf gh-pages/api cp -rf target/site/apidocs/. gh-pages/api - name: Tidy up the javadocs if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} id: tidy uses: cicirello/javadoc-cleanup@v1 with: base-url-path: https://chips-n-salsa.cicirello.org/ path-to-root: gh-pages user-defined-block: | - name: Log javadoc-cleanup output if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: | echo "modified-count = ${{ steps.tidy.outputs.modified-count }}" - name: Commit documentation changes without pushing yet if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: | cd gh-pages if [[ `git status --porcelain` ]]; then git config --global user.name 'github-actions' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' git add -A git commit -m "Automated API website updates." fi cd .. - name: Generate the sitemap if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} id: sitemap uses: cicirello/generate-sitemap@v1 with: base-url-path: https://chips-n-salsa.cicirello.org/ path-to-root: gh-pages - name: Output stats if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: | echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}" echo "url-count = ${{ steps.sitemap.outputs.url-count }}" echo "excluded-count = ${{ steps.sitemap.outputs.excluded-count }}" - name: Commit documentation website sitemap and push all commits if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: | cd gh-pages if [[ `git status --porcelain` ]]; then git config --global user.name 'github-actions' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' git add -A git commit -m "Automated API website sitemap update." fi git push cd ..
Related posts
- How to Patch the Deprecated set-output in GitHub Workflows and in Container Actions
- Automate Updating Major Release Tag on New Releases of a GitHub Action
- How to Test a GitHub Action with GitHub Actions
- How to Use Maven Profiles to Selectively Activate Plugins and Other Configuration from the Command Line
- generate-sitemap action