name: Docs Build & Deploy on: push: branches: - main - develop paths: - 'docs/**' pull_request: branches: - main - develop paths: - 'docs/**' workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: build: runs-on: ubuntu-latest defaults: run: working-directory: docs steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: docs/package-lock.json - name: Install dependencies run: npm ci - name: Build run: npm run docs:build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: docs/.vitepress/dist deploy: if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 # Lighthouse CI for PRs lighthouse: if: github.event_name == 'pull_request' runs-on: ubuntu-latest needs: build defaults: run: working-directory: docs steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: docs/package-lock.json - name: Install dependencies run: npm ci - name: Build run: npm run docs:build - name: Start preview server run: | npm run docs:preview -- --host 127.0.0.1 --port 4173 & npx --yes wait-on http://127.0.0.1:4173/ - name: Run Lighthouse CI uses: treosh/lighthouse-ci-action@v10 with: urls: | http://127.0.0.1:4173/ uploadArtifacts: true temporaryPublicStorage: true commentPR: true budgetPath: docs/lighthouse-budget.json