name: Publish Docs on: workflow_dispatch: inputs: version: description: 'Docs version to publish (e.g. 2.1.0)' required: true type: string workflow_call: inputs: version: description: 'Docs version to publish (e.g. 2.1.0)' required: true type: string secrets: MAVEN_USERNAME: required: true MAVEN_PASSWORD: required: true jobs: docs: name: Build JavaDoc & Update gh-pages runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Temurin 21 uses: actions/setup-java@v4 with: distribution: temurin java-version: 21 cache: maven - name: Build project (compile + resolve deps, skip tests) run: mvn -B --settings .github/settings.xml clean verify -DskipTests env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} # javadoc:aggregate runs on the reactor root. # With flash + flash-extensions both declared as modules in root pom.xml, # this produces a single aggregated Javadoc covering all modules. # Default output path: target/site/apidocs/ (no custom reportOutputDirectory set). - name: Generate aggregated JavaDoc run: | mvn -B \ --settings .github/settings.xml \ -DskipTests \ org.apache.maven.plugins:maven-javadoc-plugin:3.6.3:aggregate env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - name: Verify JavaDoc output exists run: | APIDOCS="" if [ -f "target/site/apidocs/index.html" ]; then APIDOCS="target/site/apidocs" elif [ -f "target/reports/apidocs/index.html" ]; then APIDOCS="target/reports/apidocs" else echo "ERROR: JavaDoc output not found." echo echo "Contents of target/:" find target -maxdepth 5 2>/dev/null || echo "(empty)" exit 1 fi echo "APIDOCS_DIR=$APIDOCS" >> $GITHUB_ENV COUNT=$(find "$APIDOCS" -name '*.html' | wc -l) echo "JavaDoc OK — $COUNT HTML files at $APIDOCS" - 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 and latest run: | VERSION=${{ inputs.version }} mkdir -p gh-pages-out/javadoc/$VERSION cp -r "$APIDOCS_DIR"/. gh-pages-out/javadoc/$VERSION/ rm -rf gh-pages-out/latest mkdir -p gh-pages-out/latest cp -r "$APIDOCS_DIR"/. gh-pages-out/latest/ - name: Regenerate index.html run: | cd gh-pages-out python3 - <<'EOF' import os, re def version_key(v): parts = re.findall(r'\d+', v) return [int(p) for p in parts] if parts else [0] versions = sorted( [d for d in os.listdir("javadoc") if os.path.isdir(f"javadoc/{d}")], key=version_key, reverse=True ) latest = versions[0] if versions else None rows = "\n".join( f'''
API documentation for all published Flash releases.
""" + ( f''' Latest release — {latest} ''' if latest else "" ) + """