.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: Java CI

env:
    JDK_CURRENT: 17
    DISTRIBUTION: zulu

on:
    push:
        branches:
            - master
    pull_request:
        branches:
            - master

permissions:
  contents: read

jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
            - name: Set up JDK
              uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
              with:
                  java-version: ${{ env.JDK_CURRENT }}
                  distribution: ${{ env.DISTRIBUTION }}
            - name: Cache Maven dependencies
              uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
              with:
                  path: ~/.m2/repository
                  key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
                  restore-keys: ${{ runner.os }}-m2
            - name: Build with Maven
              run: mvn -B clean install

    deploy:
        if: startsWith(github.ref, 'refs/heads/')
        runs-on: ubuntu-latest
        needs: [build]
        steps:
            - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
            - name: Set up JDK
              uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
              with:
                  java-version: ${{ env.JDK_CURRENT }}
                  server-id: sonatype-nexus-snapshots
                  server-username: MAVEN_USERNAME
                  server-password: MAVEN_PASSWORD
                  distribution: ${{ env.DISTRIBUTION }}
            - name: Deploy to Sonatype
              run: mvn -B -DskipTests deploy
              env:
                  MAVEN_USERNAME: ${{ secrets.SONATYPE_USER }}
                  MAVEN_PASSWORD: ${{ secrets.SONATYPE_PWD }}

    doc:
        if: startsWith(github.ref, 'refs/heads/')
        runs-on: ubuntu-latest
        needs: [deploy]
        steps:
            - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
            - name: Set up JDK
              uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
              with:
                  java-version: ${{ env.JDK_CURRENT }}
                  distribution: ${{ env.DISTRIBUTION }}
            - name: Generate and push doc
              run: chmod -R 777 ./ci/*.sh && ./ci/push-doc-to-gh-pages.sh
              env:
                  GH_TOKEN: ${{ secrets.GH_TOKEN }}