name: Release on: push: tags: - 'v*' jobs: release: name: Build, Sign, Deploy & Publish runs-on: ubuntu-latest permissions: contents: write pages: write id-token: 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: Generate aggregated JavaDoc run: | mvn -B --settings .github/settings.xml \ -pl flash,flash-extensions -am \ javadoc:aggregate -DskipTests env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - name: Checkout gh-pages uses: actions/checkout@v4 with: ref: gh-pages path: gh-pages-out token: ${{ secrets.GITHUB_TOKEN }} - name: Copy JavaDoc to versioned folder run: | VERSION=${{ steps.version.outputs.VERSION }} mkdir -p gh-pages-out/javadoc/$VERSION cp -r flash/target/site/apidocs/. gh-pages-out/javadoc/$VERSION/ rm -rf gh-pages-out/latest mkdir -p gh-pages-out/latest cp -r flash/target/site/apidocs/. gh-pages-out/latest/ - name: Regenerate index.html run: | cd gh-pages-out python3 - <<'EOF' import os, re versions = sorted( [d for d in os.listdir("javadoc") if os.path.isdir(f"javadoc/{d}")], key=lambda v: [int(x) for x in re.sub(r'[^0-9.]', '', v).split('.') if x], reverse=True ) rows = "\n".join( f'
Browse the published API documentation for each release.