name: Photon API Documentation on: # Run on pushes to main and pushed tags, and on pull requests against main, but ignore the docs folder push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} cancel-in-progress: true # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write jobs: validation: name: "Validation" runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@v5 build_demo: name: Build PhotonClient Demo defaults: run: working-directory: photon-client runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - name: Install pnpm uses: pnpm/action-setup@v5 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm cache-dependency-path: photon-client/pnpm-lock.yaml - name: Install Dependencies run: pnpm i --frozen-lockfile - name: Build Production Client run: pnpm run build-demo - uses: actions/upload-artifact@v7 with: name: built-demo path: photon-client/dist/ run_java_cpp_docs: name: Build Java and C++ API Docs needs: [validation] runs-on: "ubuntu-24.04" steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 0 - name: Fetch tags run: git fetch --tags --force - name: Install Java 17 uses: actions/setup-java@v5 with: java-version: 17 distribution: temurin - name: Build javadocs/doxygen run: | chmod +x gradlew ./gradlew photon-docs:generateJavaDocs photon-docs:doxygen - uses: actions/upload-artifact@v7 with: name: docs-java-cpp path: photon-docs/build/docs publish_api_docs: name: Publish API Docs needs: [run_java_cpp_docs] runs-on: ubuntu-24.04 steps: # Download docs artifact - uses: actions/download-artifact@v8 with: pattern: docs-* - run: find . - name: Publish Docs To Development if: github.ref == 'refs/heads/main' uses: up9cloud/action-rsync@v1.4 env: HOST: ${{ secrets.WEBMASTER_SSH_HOST }} USER: ${{ secrets.WEBMASTER_SSH_USERNAME }} KEY: ${{secrets.WEBMASTER_SSH_KEY}} TARGET: /var/www/html/photonvision-docs/development/ - name: Publish Docs To Release if: startsWith(github.ref, 'refs/tags/v') uses: up9cloud/action-rsync@v1.4 env: HOST: ${{ secrets.WEBMASTER_SSH_HOST }} USER: ${{ secrets.WEBMASTER_SSH_USERNAME }} KEY: ${{ secrets.WEBMASTER_SSH_KEY }} TARGET: /var/www/html/photonvision-docs/release/ publish_demo: name: Publish PhotonClient Demo needs: [build_demo] runs-on: ubuntu-24.04 steps: - uses: actions/download-artifact@v8 with: name: built-demo - run: find . - name: Publish demo if: github.ref == 'refs/heads/main' uses: up9cloud/action-rsync@v1.4 env: HOST: ${{ secrets.WEBMASTER_SSH_HOST }} USER: ${{ secrets.WEBMASTER_SSH_USERNAME }} KEY: ${{ secrets.WEBMASTER_SSH_KEY }} TARGET: /var/www/html/photonvision-demo