name: Release on: push: tags: - 'v*' jobs: # ── 1. Build, GPG-sign, deploy to Maven releases ────────────────────────── release: name: Build, Sign & Deploy runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Extract version from tag id: version run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT - name: Set up Temurin 21 uses: actions/setup-java@v4 with: distribution: temurin java-version: 21 cache: maven - name: Import GPG key run: | echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import GPG_KEY_ID=$(gpg --list-secret-keys --with-colons | grep '^sec' | cut -d: -f5 | head -1) echo "GPG_KEY_ID=$GPG_KEY_ID" >> $GITHUB_ENV - name: Build, sign and deploy to releases run: | mvn -B --settings .github/settings.xml \ -DperformRelease=true \ -Dgpg.keyname=$GPG_KEY_ID \ clean deploy env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} name: ${{ github.ref_name }} generate_release_notes: true draft: false prerelease: false outputs: version: ${{ steps.version.outputs.VERSION }} # ── 2. Publish JavaDoc (delegated to docs.yml — single source of truth) ─── docs: name: Publish JavaDoc needs: release uses: ./.github/workflows/docs.yml with: version: ${{ needs.release.outputs.version }} secrets: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}