name: Release to Maven Central

on:
  push:
    branches: [ release/release ]

jobs:
  build:
    name: Release project
    runs-on: ubuntu-latest

    steps:

    - name: Check out sources
      uses: actions/checkout@v3

    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: 17
        cache: 'maven'

    - name: Install GPG key
      run: |
        echo "${{ secrets.GPG_PRIVATE_KEY }}" > gpg.asc
        echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --yes --passphrase-fd 0 --import gpg.asc

    - name: Release to Sonatype OSSRH
      env:
          SONATYPE_USER: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
          SONATYPE_PASSWORD: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
          GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
          GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
          GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
          GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
      run: |
        ./mvnw -B clean install -DskipTests
        ./mvnw -B clean deploy -Pci,sonatype -s settings.xml

    - name: Setup Graphviz
      uses: ts-graphviz/setup-graphviz@v1

    - name: Deploy documentation
      env:
        ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
        ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
        GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
        GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
        GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
      run: ./mvnw -B clean deploy -Pdocumentation
