name: Deploy Documentation on: push: branches: - main paths: - 'website/**' - 'scripts/generate-llms-full.sh' workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow only one concurrent deployment concurrency: group: "pages" cancel-in-progress: true jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 20 cache: 'npm' cache-dependency-path: website/package-lock.json - name: Install dependencies working-directory: website run: npm ci - name: Generate llms-full.txt run: ./scripts/generate-llms-full.sh - name: Build website working-directory: website run: npm run build - name: Check internal links uses: lycheeverse/lychee-action@v2 with: args: | --verbose --no-progress --offline --include-fragments --timeout 30 --exclude-path 'website/build/search/**' website/build fail: true - name: Check external links (non-blocking) uses: lycheeverse/lychee-action@v2 continue-on-error: true with: cache: true args: | --verbose --no-progress --timeout 30 --scheme https --scheme http --exclude 'localhost' --exclude '127.0.0.1' --exclude 'tree/main' --exclude 'example.com' --exclude 'mailto:' --exclude-path 'website/build/search/**' website/build - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: path: website/build deploy: # Guard: deploy should only run in the canonical repository (not in forks) if: ${{ github.repository == 'steveyegge/beads' }} 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