name: Deploy Documentation on: push: branches: [main] paths: # Dokka sources (KDoc in source files) - 'androidApp/src/**' - 'core/**/src/**' - 'feature/**/src/**' - 'desktopApp/src/**' # Docs site sources - 'docs/**' - 'feature/docs/**' # Build infrastructure - 'build-logic/**' - 'build.gradle.kts' - 'settings.gradle.kts' - '.github/workflows/docs-deploy.yml' workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: true jobs: build: if: github.repository == 'meshtastic/Meshtastic-Android' runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v6 with: submodules: true fetch-depth: 0 - name: Gradle Setup uses: ./.github/actions/gradle-setup with: gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} - name: Build Dokka HTML documentation run: ./gradlew dokkaGeneratePublicationHtml --no-configuration-cache - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '4.0.4' bundler-cache: true working-directory: docs - name: Generate Docs Site run: ./gradlew generateDocsBundle validateDocsBundle publishDocsSite -Pdocs.channel=root -Pci=true - name: Compile Jekyll Docs Site run: | BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll build \ --source build/_site \ --destination build/jekyll_site \ --baseurl /${{ github.event.repository.name }} touch build/jekyll_site/.nojekyll - name: Assemble Pages artifact run: | # Copy Dokka output into compiled jekyll_site/api/ cp -r build/dokka/html build/jekyll_site/api - name: Upload Pages Artifact uses: actions/upload-pages-artifact@v5 with: path: build/jekyll_site/ deploy: if: github.repository == 'meshtastic/Meshtastic-Android' needs: build runs-on: ubuntu-24.04-arm environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v5